1.结构体指针 本质上还是指针,只是指针类型不一样。
(1)定义 stu *sp=&a;
(2)访问 a.name 进行访问,(*sp).name;(.)的优先级要比(*)高所以要加小括号。
访问有两种。一是,通过地址取值符(&)来访问,二是通过(->)来访问。
2,指针与数组 指针与结构体数组。
(1)单个结构体访问 只有三种,1)结构体名 (a.)2)使用指针时(*p=a;p.)3)使用指针 (*p=a;p->)
(2)结构体数组访问 1)结构体数组,结构体成员名(.) 2)使用指针 p[i]. 3) 使用指针 *(p+i)
3.(1)当结构体数组作为参数的时候一定要有两个参数,肯定要传入数组,数组元素的个数。
4.宏定义 预编译。完全的替换,(1)批量的文本替换,使用#define 要替换的 define A B(用a替换b),再编译之前进行替换。
(2)带参数的宏 例 写一个宏定义,判断返回两个数的最大值。(定义一个带参数的宏定义,实现安全的求两个数的最大值)
1)加括号,防止运算符出现打破三目运算符的结构。
2)通过中间变量,保存a,b的值,防止,自运算导致的逻辑错误。
(1)定义一个点坐标的结构体,包含两个成员变量,float x,y;定义两个结构体变量,m,n再使用两个结构体指针,计算两点距离,开放sqrt。
(2).遍历打印结构体数组里面的元素,使用指针,指针变量指向每一个结构体数组成员的首地址。
(3)遍历上面数组,找到最大的并找到名字。
(4)打印一个结构体数组的所有元素。使用函数 指针参数
(1)遍历数组,把所有男生的年龄加10.
(2)添加完成之后最大年龄只能是25.