指针高级---结构体指针
定义指针变量时需要注意类型与初始值
指针所占内存空间只与操作系统有关, 操作系统位数小得内存不会分配出大地址
*p取数据问题 *p=*&language=language等于结构体变量名
注意操作符的优先级问题‘.’的优先级大于‘*’的 优先级,所以当用指针取结构体成员的时候一定要注意(*p)中()的使用,另外,为了方便,结构体指针有一种特殊的操作方式,就是特别的操作符->
结构体数组的指针
结构体指针指向结构体数组的第一个元素的首地址,也就是结构名字所代表的地址,p = array;
访问结构体元素的成员的方式有三种:
1. 数组[索引]
2.结构体名.
3.结构体指针->
注意:结构体指针变量里面存储的是地址, 类型是结构体类型,所以赋值的时候不可以使结构体变量中得成员地址赋给结构体指针,如果实在想赋值的话,可以将成员地址进行强制转换。例如 平p = (struct student *)stu.name
宏
宏是一个完全替换的过程,注意是完全替换,原封不动的替换, 在编译前进行,宏后面不加分号
宏分为无参宏和有参宏
无参宏:一般多使用在接口中
有参宏:#define MAX(A, B)(A > B ? A : B)
宏的写法:两种,一种是全部用大写,一种是k+驼峰法
条件编译
如果被定义
#ifdef
执行下面的代码
xxxxxxxxx
否则
#else
执行下面代码
xxxxxxxxx
#endif
另外一种写法
#ifndef
xxxxxxxxx
#else
xxxxxxxxxx
endif
//// 最常用的一种
//#if iOS7
//// 代码1
//#define state 20
//#else
//// 代码2
//#define state 0
//#endif