结构体、共用体、枚举类型、typedef梳理
一、先声明类型名,再定义类型的变量(也可以不写出类型名)
一般结构:
struct 结构体名//可省略
{ 成员名1;
成员名2;
......}变量名1,变量名2,......;
初始化时字符串用“”,字符用‘’。
对成员名赋值 :变量名.成员名=........;
结构体成员为字符数组时,从键盘通过scanf获取值无需使用取地址符号。普通成员须使用&符号。
结构体数组的定义:
struct 结构名{
成员表列;
}数组名[长度]={初始化表列};
定义结构体指针:
struct 类型名 *指针;
指针=&类型名;
(*p)表示的是p指向的指针变量,(*p).num代表的是结构体变量的成员num。
成员运算符“.”优于"*",*p.num等价于*(p.num)。
.运算符优先级最高。
如果p指向一个结构体变量stu,以下三种用法等价:
stu.成员名
(*p).成员名
p->成员名
二、共用体
共用体内存占用的长度等于成员表列中最长的那个,
(使用sizeof函数对其中任意定义变量求字节数都为最长者)
共用体初始化时只能有一个变量(因为每个变量占用的是同一内存单元),
且最后一次被赋值的成员的值为最终值。
结构体和共用体可以
互相嵌套;
三、枚举类型
定义:
enum 枚举名{ 成员列表(中间用逗号隔开)};
无定义的元素复赋值规则:
首元素为0,其余根据已赋值的成员左减右加。
四、typedef 可以声明新类型:
1.用新名字代替原来的名字(区别于define,#define适用于宏定义在函数之前)
2.将复杂的类型名变简单一点:
(1)命名一个新类型名代替结构体;
tyedef 结构体类型名{
成员列表;
}新类型名;
(2)数组,指针,库函数都可以换新名字使用;
浙公网安备 33010602011771号