📅  最后修改于: 2023-12-03 14:40:27.308000             🧑  作者: Mango
C结构体是一种用户自定义数据类型,用来存储多个类型的数据,这些数据可以是相同类型或不同类型的数据。
C结构体的定义通常包含以下几部分:
struct 结构体名 {
数据类型 成员变量1;
数据类型 成员变量2;
数据类型 成员变量3;
…
};
其中,结构体名是用户定义的结构体名称;成员变量是结构体内部存储的数据类型,也称为结构体成员;成员变量之间用分号隔开。
// 定义一个结构体
struct Person {
char name[20];
int age;
float weight;
};
int main() {
// 初始化结构体
struct Person person1 = { "Tom", 20, 60.5 };
struct Person person2 = { "John", 25, 70.5 };
// 访问结构体成员变量
printf("person1: name=%s, age=%d, weight=%.1f\n", person1.name, person1.age, person1.weight);
printf("person2: name=%s, age=%d, weight=%.1f\n", person2.name, person2.age, person2.weight);
return 0;
}
输出:
person1: name=Tom, age=20, weight=60.5
person2: name=John, age=25, weight=70.5
C共同体(也称联合体)是一种用户自定义数据类型,它的所有成员共享同一块内存空间。
C共同体的定义与C结构体类似,也包含成员变量。
union 共同体名 {
成员变量1;
成员变量2;
成员变量3;
…
};
其中,共同体名是用户定义的共同体名称;成员变量是共同体内部存储的数据类型,也称为共同体成员。
// 定义一个共同体
union Data {
char c;
int i;
float f;
};
int main() {
union Data data;
data.c = 'A';
printf("data.c = %c\n", data.c);
data.i = 100;
printf("data.i = %d\n", data.i);
data.f = 12.34;
printf("data.f = %.2f\n", data.f);
printf("data.c = %c\n", data.c); // 注意观察共同体成员之间的共享情况
return 0;
}
输出:
data.c = A
data.i = 100
data.f = 12.34
data.c =
枚举是一种用户自定义类型,用来枚举(列举)一组有限的值。
C语言中,枚举类型定义方式如下:
enum 枚举类型名 {
枚举成员名1,
枚举成员名2,
枚举成员名3,
…
};
其中,枚举类型名为用户定义的类型名称;枚举成员名为用户定义的枚举成员名称。
// 定义一个枚举类型
enum Color {
RED,
GREEN,
BLUE
};
int main() {
enum Color color = GREEN;
switch (color) {
case RED:
printf("color is RED\n");
break;
case GREEN:
printf("color is GREEN\n");
break;
case BLUE:
printf("color is BLUE\n");
break;
default:
printf("unknown color\n");
break;
}
return 0;
}
输出:
color is GREEN
C结构体、共同体、枚举是C语言中比较常用的自定义数据类型,它们可以用来存储多种类型的数据,方便代码的编写和阅读。在实际编程中,我们应根据需要选择不同的自定义数据类型来完成任务。