在C语言中,构造类型是把多个数据结合在一起,并将每个数据称作为构造类型的”成员“。
数组就是构造类型中的一种,由多个相同数据类型的"成员"组成.。结构体和共用体可以由多个不同数据类型的“成员”组成。
共同体类型同结构体类型一样,属于构造类型,也称联合体,定义方法都相同
共同体类型同结构体类型之间的区别:
在定义之前,需要先定义结构体类型,再次定义该结构体类型的变量
- struct 结构体类型名称 {
- 成员类型1 成员名1;
- 成员类型2 成员名2;
- ...
- 成员类型n 成员名n;
- };
-
其中,Struct是关键字,结构体类型名称的命名规则满足标识符命名规则,用于标识该结构体类型。成员类型可以是任意的数据类型,包括基本类型、指针类型、数组类型、结构体类型等。成员名是该成员在结构体中的名称。
例如,定义一个学生信息的结构体:
- struct Student {
- int id; // 学号
- char name[20]; // 姓名
- int age; // 年龄
- float score; // 成绩
- };
-
这里,Student是一个结构体标识符,id、name、age和score是该结构体的四个成员,分别表示学生的学号、姓名、年龄和成绩。
- typedef 已有类型 新类型名;
-
其中,已有类型可以是任意的数据类型,如int
、float
、char
、struct
等,新类型名是你自己定义的一个新类型名,可以是任意合法的标识符。
例如,定义一个int
型别名my_int
:
- typedef int my_int;
-
这样,我们就可以使用my_int
来代替int
的使用:
- my_int a = 100;
-
结构体定义后可以作为一种已存在的数据类型使用,但是它只是一个模型,没有具体的数据,只是告诉编译系统该结构由哪些数据类型组成,各占多少字节,并当成一个整体处理,同时编译系统没有在内存中给结构体分配内存空间
- struct 结构体类型名
- {
- 数据类型 成员名1;
- 数据类型 成员名2;
- ...
- 数据类型 成员名n;
- };
- struct 结构体类型名 变量名;
-
示例代码如下:
- struct student
- {
- int sno;
- char name[10];
- char classname[20];
- float qrade[5];
- };
- struct student stul;
这里定义了一个名为 student
的结构体类型,它有四个成员,分别为学号 sno
、姓名 name
、班级名称 classname
和五门课程的成绩 grade
。然后定义了一个结构体变量 stul
,该变量的类型为 struct student
。
- struct 结构体类型名
- {
- 数据类型 成员名1;
- 数据类型 成员名2;
- ...
- 数据类型 成员名n;
- }结构体变量;
-
示例代码如下:
- struct student
- {
- int sno;
- char name[10];
- char classname[20];
- float qrade[5];
- }stul;
这里定义了一个名为 student
的结构体类型,和之前一样,它有四个成员,分别为学号 sno
、姓名 name
、班级名称 classname
和五门课程的成绩 grade
。在结构体类型定义的最后,直接定义了一个名为 stul
的结构体变量,该变量的类型为 struct student
。