结构体:将不同数据类型组合在一起形成一个新的类型。
定义、声明(可在定义的时候声明)、引用结构体成员(成员运算符“ . ”、声明结构体指针,指向运算符“ -> ”)、初始化(在定义时可直接声明并赋值)、结构体嵌套
声明结构体指针变量:要引用结构体指针变量的成员,需要使用指向运算符“ -> ”;
结构体嵌套:1.在结构体中定义子结构体,并声明子结构体变量;2.在定义时声明其他已定义好的结构体变量
结构体数组:数组的元素时结构类型,结构体数组的每一个元素都是具有相同结构类型的结构变量
重命名数据类型:给一个数据类型定义一个别名。别名仍需要使用名字空间
共用体(联合体):关键字union。一个存储空间可变的数据类型。将不同的数据项组织为一个整体,在内存中占用首地址相同的一段存储单元。
引用共用体对象成员:使用“ . ”成员运算符。
枚举:特殊的常量。用枚举类型声明的变量,其变量的值只能取自括号内的这些标识符。编译器默认将标识符自动赋上整型常数。可以自行修改整型常数的值。如果只给前几个标识符赋整型常数,编译器会给后面标识符自动累加赋值。
枚举数据类型的定义、枚举类型变量的声明
自定义类型:增加了代码的复用性。自己定义类型说明符
宏定义:替换源代码中字符串的机制。可分为带参数的宏定义与不带参数的宏定义。可以用#undef命令终止宏定义的作用域。
tips:1.结构体变量做参数,函数的形参的结构体类型名前要加上struct关键字;
2.一个共用体变量不能同时存放多个成员的值,某一时刻只能存放其中的一个成员的值;
3.不能引用共用体变量,而只能引用共用体变量中的成员;
4.给枚举变量赋值只能赋予该枚举类型定义时花括号里的值;不能直接给枚举变量赋整数数值,但是可以通过强制类型转换,将整数转化为合适的枚举型数值
5.#define命令就是定义一个可替换的宏。宏名一般习惯用大写字母表示,以便与变量名相区别。
6.宏定义时参数要加括号。eg:#define MUL(x,y) x*y =>#define MUL(x,y) (x)*(y)
7.宏扩展必须使用括号来保护表达式中低优先级的操作符。eg: #define ADD(x,y) x+y ;a=3*ADD(3,4) =>a=3*(ADD(3,4));