根据需要创建数据类型

这章是参考书的最后一章,组要讲了不同的结构体,还包括一点点数据结构的知识

8.1 定义和引用结构体变量

8.1.1 创建结构体

结构体实际是包含很多变量的数据结构,不同于数组,数组只能存储类型相同的的变量,结构体则可以定义不同的类型变量,一般说这些变量都是有关系的;

结构体变量在内存上互不干扰,根据声明的顺序

1
2
struct 结构体名
{成员列表};

8.1.2 定义结构体变量

1.先声明类型,再定义变量
1
2
struct student student1,student2;
//结构体类型名 结构体变量名
2.声明类型体同时声明变量
1
2
3
4
5
6
7
8
9
10
11
12
struct student
{
int num;
char name[20];
//***
}student1,student2;

/*struct 结构体名
{
成员列表;
}结构体变量名;
*/
3.不指定类型名,直接定义结构体类型变量
1
2
3
4
5
6
7
8
9
10
11
12
struct
{
int num;
char name[20];
//***
}student1,student2;

/*struct
{
成员列表;
}结构体变量名;
*/

8.1.3 引用结构体变量

用运算符号.引用

1
结构体变量名.数据成员名

8.2 结构体数组

8.2.1 定义结构体数组

1.先声明类型,再定义结构体数组
1
2
3
struct Person student[10];
//结构体类型 数组名[数组长度];
//Person是一种类型
2.一般形式
1
2
3
4
5
6
7
8
9
10
11
12
struct Person
{
int num;
char name[20];
//***
}student[10];

/*struct 结构体名
{
成员列表;
}数组名[数组长度];
*/

结构体数组的初始化就是给数组赋值

8.3 结构体指针

结构体指针指向的是结构体变量的起始位置

8.3.1 指向结构体变量的指针

假设定义了一个指向结构体变量a的指针*p

1
2
3
a.成员名;
(*p).成员名;
p->成员名;

不能给指针p赋一个地址

8.5 枚举类型

枚举是一种基本数据类型,可以让数据更简洁

1
enum 枚举名 {枚举元素1,枚举元素2,···};

8.5.1定义枚举变量

1、先定义枚举类型,再定义枚举变量
1
2
3
4
5
6
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
//指定MON为1,后面顺序加上1
2、定义枚举类型的同时定义枚举变量
1
2
3
4
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
3、省略枚举名称,直接定义枚举变量
1
2
3
4
enum
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
  • 枚举变量是个标识符,不可赋值
  • 枚举元素默认值为0,1,2,3,···