1.结构体
① 结构体的定义
struct 结构体名{
类型说明符 成员名1;
类型说明符 成员名2;
};
/*
struct 结构体名{
类型说明符 成员名1;
类型说明符 成员名2;
};
*/
struct student{
int num;
char name[20];
char sex;
float score;
};
② 结构体变量
- 结构体变量的定义
//① 先定义结构体类型,再定义结构体变量 struct student{ int num; char name[20]; }; struct student boyl,boy2; //② 定义结构体类型的同时,定义结构体变量 struct student{ int num; char name[20]; }boyl,boy2; //③ 省略结构体名,直接定义结构体变量 struct{ int num; char name[20]; }boyl,boy2;
- 结构体变量的引用
结构体变量名.成员名;//结构体变量名.成员名; boyl.num; boy2 .name;
- 结构体变量的赋值值
只能对结构体变量的成员进行操作,不能对结构体变量整体进行操作//只能对结构体变量的成员进行操作 //不能对结构体变量整体进行操作 boy1.num=123; boy2 .name="张三";
- 结构体变量的初始化
struct 结构体变量={初始化数据};//struct 结构体变量={初始化数据}; struct student{ int num; char name[20]; }boy={123,"张三"}; //or struct student{ int num; char name[20]; }; struct student boy={123,"张三"};
③ 结构体数组
- 结构体数组的定义
//① 先定义结构体类型,再定义结构体数组 struct student{ int num; char name[20]; }; struct student boy[2]; //② 定义结构体类型同时,定义结构体数组 struct student{ int num; char name[20]; }boy[2]; //③ 省略结构体名,直接定义结构体数组 struct { int num; char name[20]; }boy[2];
- 结构体数组的引用
结构体数组名[数组元素的下标].成员名;//结构体数组名[数组元素的下标].成员名; boy[0].num;
- 结构体数组的初始化
struct 结构体数组={初始化数据};//struct 结构体数组={初始化数据}; struct student{ int num; char name[20]; }boy[2]={{123,"张三"},{456,"李四"}};
④ 结构体指针
- 结构体指针的定义
struct 结构体变量名 *结构体指针变量名;//struct 结构体变量名 *结构体指针变量名; struct student *p;
- 结构体指针的引用
结构体指针变量名=结构体变量地址;//结构体指针变量名=结构体变量地址; p=&boy1;
- 结构体指针变量的赋值
① (*结构体指针变量).成员名;
② 结构体指针变量->成员名;//① (*结构体指针变量).成员名; (*p).num; //② 结构体指针变量->成员名; p->name;
2.共用体(联合体)
① 共用体的定义
union 共用体名{
类型说明符1 成员名1;
类型说明符2 成员名2;
};
/*
union 共用体名{
类型说明符1 成员名1;
类型说明符2 成员名2;
};
*/
union data{
int a;
char b;
float c;
};
② 共用体变量
所有成员共用一段内存地址。
定义时不能初始化!!!
- 共用体变量的定义
//① 先定义共用体类型,再定义该类型的共用体变量 union data{ int a; char b; }; union data a,b; //② 定义共用体类型的同时,定义该类型的共用体变量 union data{ int a; char b; }a,b; //③ 省略共用体名,直接定义共用体变量 union{ int a; char b; }a,b;
- 共用体变量的引用
① 共用体变量.成员名;
② 共用体变量->成员名;//① 共用体变量.成员名; a.a; //② 共用体变量->成员名; a->a;
3.枚举类型
① 枚举类型的定义
枚举类型数据:一个变量只有几种可能的值,且只能取其中之一。
enum枚举类型名{枚举元素1,枚举元素2};
//enum枚举类型名{枚举元素1,枚举元素2};
enum weekday{sun,mon,tue,wed,thu,fri,sat};
② 枚举变量
- 枚举变量的定义
//① 先定义枚举类型,再定义该类型的枚举变量 enum weekday{sun,mon,tue,wed,thu,fri,sat}; enum weekday a,b; //② 定义枚举类型的同时,定义该类型枚举变量 enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b; //③ 省略枚举类型名,直接定义枚举变量 enum{sun,mon,tue,wed,thu,fri,sat}a,b;
- 枚举变量的赋值
① 枚举元素可在定义枚举类型时初始化(默认为顺序号)
② 枚举元素是常量,不可赋值
③ 只能把枚举元素赋给枚举变量,不能直接赋枚举变量的值
④ 枚举值可以比较大小//① 枚举元素可在定义枚举类型时初始化(默认为顺序号) enum weekday{sun=7,mon=l,tue,wed,thu,fri,sat}; //② 枚举元素是常量,不可赋值 //③ 只能把枚举元素赋给枚举变量,不能直接赋枚举变量的值 a=sun; a=(enum weekday)7; //④ 枚举值可以比较大小 enum weekday{sun=7,mon=l,tue,wed,thu,fri,sat}; int day; for(day=sun;day<=sat;day++)
4.typedef定义类型
宏定义:预处理时完成。
typedef:编译时完成(更为灵活方便)。
//typedef 类型名 新类型名;
typedef int INT; //定义 INT 为int 的别名