C语言中的结构体和联合
结构体(struct)和联合(union)是C语言中用于创建复杂数据类型的复合类型。
结构体(struct)
结构体允许将多个不同或相同类型的变量组合成一个单一的类型。
结构体的定义
struct 结构体名称 {
类型 成员变量1;
类型 成员变量2;
...
};
或者
struct 结构体名称 {
类型 成员变量1;
类型 成员变量2;
...
} 结构体变量;
结构体的使用
创建结构体变量,并访问其成员。
struct 结构体名称 变量名称;
变量名称.成员变量1 = 值;
变量名称.成员变量2 = 值;
结构体数组
结构体数组是存储多个相同结构体类型的数组。
struct 结构体名称 数组名称[数组大小];
联合(union)
联合允许在相同的内存位置存储不同的数据类型,但一次只能使用其中一个成员。
联合的定义
union 联合名称 {
类型 成员变量1;
类型 成员变量2;
...
};
或者
union 联合名称 {
类型 成员变量1;
类型 成员变量2;
...
} 联合变量;
联合的使用
创建联合变量,并访问其成员。
union 联合名称 变量名称;
变量名称.成员变量1 = 值;
变量名称.成员变量2 = 值;
代码示例说明
以下是具体的代码示例,展示结构体和联合的定义和使用。
#include <stdio.h>
// 结构体定义
struct Student {
char name[50];
int age;
float score;
};
// 联合定义
union Data {
int i;
float f;
char str[20];
};
int main() {
// 结构体的使用
struct Student stu;
stu.name = "John Doe";
stu.age = 20;
stu.score = 92.5;
printf("Name: %s, Age: %d, Score: %.2f\n", stu.name, stu.age, stu.score);
// 结构体数组
struct Student students[3] = {
{"John Doe", 20, 92.5},
{"Jane Doe", 22, 88.0},
{"Jim Doe", 19, 94.5}
};
for (int i = 0; i < 3; i++) {
printf("Name: %s, Age: %d, Score: %.2f\n", students[i].name, students[i].age, students[i].score);
}
// 联合的使用
union Data data;
data.i = 10;
printf("data.i: %d\n", data.i);
data.f = 220.5;
printf("data.f: %.2f\n", data.f);
// 注意:此时data.i的值可能会被覆盖,因为它们共享相同的内存位置
return 0;
}
以上代码展示了结构体和联合的定义和使用。结构体允许将多个不同类型的变量组合在一起,而联合则允许在相同的内存位置存储不同的数据类型。这些复合类型在处理复杂数据结构时非常有用。在实际编程中,可以根据具体需求使用结构体和联合来创建和管理复杂的数据类型。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)