高级指针

指向结构体变量的指针,称为结构体指针

可以使用->指向内容。

%p打印地址

void pLenth(cPoint *p1,cPoint *p2)

//求两点间的距离  用的开方函数sqrt()和平方函数pow(,)

{

float a = sqrt(pow((p1->x-p2->x), 2)+pow((p1->y-p2->y), 2));

printf("两点距离为%.2f\n",a);

}

//main.m中代码
#import <Foundation/Foundation.h>
#import "Lesson.h"
#import "Cpoint.h"
int main(int argc, const char * argv[])
{ Student stu = {"xiao wang tou",,,'m'};
Student *p = &stu;
p->name[] -= ;//找到name第一个元素变大写
printf("%s\n",p->name);
//循环把空格字符变下划线
for (int i = ; i<strlen(p->name); i++) {
if (p->name[i]==' ') {
p->name[i]='_';
}
}
printf("%s",p->name);
// strcpy((*p).name, "xiaoliu");
// strcpy(p->name, "hello");
// printf("%lu %lu %s\nr",sizeof(stu),sizeof(p),(*p).name);
// printf("%p %p",&(p->name),p);
// Cpoint point1 = {1.25,2.36};
// Cpoint *q = &point1;
// printf("%.2f %.2f\n",q->x,q->y);//两种形式
// printf("%.2f %.2f",(*q).x,(*q).y);
// Cpoint point2[]={{5,6},{8,10}};
// Cpoint *r = point2;
// float num=sqrt((r->x-(r+1)->x)*(r->x-(r+1)->x)+(r->y-(r+1)->y)*(r->y-(r+1)->y));
// printf("%.2f",num);
// mysqrt(point2);
return ;
}
//Cpoint.h中代码
typedef struct cpoint{
float x;
float y;
}Cpoint;
void mysqrt(Cpoint point2[]);
//Cpoint.m中代码
#import "Cpoint.h"
void mysqrt(Cpoint point2[]){ Cpoint *r = point2;
float num=sqrt((r->x-(r+)->x)*(r->x-(r+)->x)+(r->y-(r+)->y)*(r->y-(r+)->y));
printf("%.2f",num);
}
//Lesson.h中代码
//创建一个学生的结构体
typedef struct student{
char name[];//姓名
int num; //学号
int age; //年龄
char sex; //性别
}Student;

结构体数组。

stu stus[3] = {0};

stu *p = &stus;

*(p+1).num  第二个学生的num

找出性别为男的学生,成绩加10,超过100写100

在student结构体中加score成员

//Lesson.h文件
typedef struct student{
char name[];//姓名
int num; //学号
int age; //年龄
char sex; //性别
float score; //分数
}Student; void manscore(Student *stud,int count);
//Lesson.m文件
//性别为男的学生成绩加10,如果超过100,成绩为100
void manscore(Student *stud,int count)
{
for (int i=; i<count; i++) {
if ((stud+i)->sex=='m') {
(stud+i)->score+=;
if ((stud+i)->score>=) {
(stud+i)->score=;
}
} printf("%.2f ",(stud+i)->score);
}
}
//主函数
Student arr[]={{"xiaoming",,,'m',},{"xiaobai",,,'f',},{"xiaoxiao",,,'m',}};
Student *p = arr;
// for (int i=0; i<3; i++) {
// if ((p+i)->sex=='m') {
// (p+i)->score+=10;
// if ((p+i)->score>=100) {
// (p+i)->score=100;
// }
// }
//
// printf("%.2f ",(p+i)->score);
// }
manscore(p, );

三、预编译指令

宏定义     实际开发中用的比较多

预编译时进行替换(编译前)

宏名命名规则:   纯大写  或者   k+驼峰

#define kMax 100

eg:MAX 或者  kMax

宏是符号常量不是变量   制作替换不做语法检查  后面没有分号;

带参数的宏

#define MUL(A,B) ((A)*(B))

#define kSum(A,B) A*B

int main(int argc, const char * argv[])
{
int a = kSum(+,-);//3+5*6-3
printf("%d",a);//输出30

条件编译

作用:按不同的条件,编译不同的代码。

条件编译  有三种形式

1.#ifdef  标识符

代码段1

#else

代码段2

#endif

    //如果定义了宏AAA
#ifdef AAA
printf("这段代码被编译");
#else
printf("这段代码才被编译");
#endif//编译结束以#endif结束

2.#ifndef 标识符

代码段1

#else

代码段2

#endif

3.#if  常量表达式

代码段1

#else

代码段2

#endif

iOS学习笔记---c语言第九天的更多相关文章

  1. iOS学习笔记---oc语言第九天

    初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...

  2. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  3. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  4. iOS学习笔记---oc语言第一天

    第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++  java   ...

  5. iOS学习笔记---c语言第八天

    指针 首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值.用来存放变量地址的变量,就称为"指针变量" int *p=nul ...

  6. iOS学习笔记---oc语言第六天

    Block .数组高级 block本质上就是匿名函数(没有名称的函数) block语法和函数指针很相似 回顾函数 函数:C语⾔中,实现某一类功能的代码段. 完整的函数包含两部分:函数声明.函数定义 函 ...

  7. iOS学习笔记---oc语言第五天

    字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...

  8. iOS学习笔记---oc语言第四天

    字符串 数组 一.使用苹果帮助文档 学会使⽤用苹果帮助⽂文档是开发者的⼀一项技能 Inherits from 继承⾃自 Conforms to 遵循什么协议 Framework 属于哪个框架 Avai ...

  9. iOS学习笔记---oc语言第三天

    继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...

随机推荐

  1. 找出html中的图片、包括css中的图片,读出图片数据转换为base64数据

    <?php echo ">> 图片的地址,css里面的要打单引号\r\n"; echo ">> 相同的图片,使用css实现图片地址只出现一次 ...

  2. C#Winform从页面获取数据,传入数据库

    环境: 1.SQLite数据库新建数据表,设置相应的字段.(其他数据库形式都相似,using相应数据库的包即可) 2.页面有两个textBox:textBox1.textBox2, 3.一个保存按钮: ...

  3. wcf精通1-15

    随笔- 197  文章- 0  评论- 3407  十五天精通WCF——第一天 三种Binding让你KO80%的业务   转眼wcf技术已经出现很多年了,也在.net界混的风生水起,同时.net也是 ...

  4. (DFS)hdoj1198-Farm Irrigation

    题目链接 DFS的简单应用,比较繁琐的是处理输入的英文字母.用并查集也可以做(可是笔者现在还没有掌握并查集,之前只用过一次,以后学会回来补上) #include<cstdio> #incl ...

  5. 《day15---多线程安全问题_JDK1.5的锁机制》

    //15同步问题的分析案例以及解决思路 //两个客户到一个银行去存钱,每个客户一次存100,存3次. //问题,该程序是否有安全问题,如果有,写出分析过程,并定于解决方案. /* 发现运行结果: su ...

  6. SQLSERVER数据库中批量导入数据的几种方法

    第一:使用Select Into 语句 如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入. select into语句的作用是把数据从另外一个数 ...

  7. C杂记

    printf主要是为了便于取地址,默认将char,short变成了int,float变成了double:但scanf的时候,因为数据宽度的问题,必须区分%f和%lf. memset 是字符串操作函数: ...

  8. Python的图形化界面

    导入easygui模块有很多种方法 , 这里只介绍一种简单使用的 . import easygui as g 将easygui 简称为g 然后开始调用她的函数就行. import easygui as ...

  9. python构建模拟模型——网站独立访问用户数量

    背景:发现一个有趣的现象,即一些用户在每一月都仅仅访问网站一次,我们想要了解这些人数量的变化趋势. 建立数学模型:简化问题,根据瓮模型推导出公式(具体推导见<数据之魅>,有时间再补充... ...

  10. PHP_Session

    Session有12个函数分别是: 01 session_start:  初始 session 02 session_destroy: 结束 session 03 session_unset: 释放s ...