C语言编程:探索结构与联合

版权申诉
0 下载量 191 浏览量 更新于2024-07-03 收藏 2.16MB PPT 举报
员项可以是任何类型,包括基本类型、其他结构或联合类型、指针等。 ⑶结构变量在内存中按照成员项顺序存储,每个成员项占用其自身类型所占的内存大小。 7.2 结构变量的初始化 结构变量可以在声明时进行初始化,也可以在声明后单独初始化。初始化时,可以对所有成员赋值,也可以只对部分成员赋值。例如: ```c struct student { long num; char name[20]; int age; char add[30]; float score; }; // 初始化 struct student wang = {123456, "Wang", 20, "Beijing", 90.5}; ``` 7.3 结构指针 结构变量的指针是指向结构首地址的指针,可以通过指针访问结构成员。例如: ```c struct student *ptr = &wang; printf("Name: %s\n", ptr->name); // 使用箭头操作符访问成员 printf("Score: %.2f\n", ptr->score); ``` 7.4 结构作为函数参数 结构可以作为函数的参数进行传递,但传递的是结构的副本,如果想在函数内部修改结构,通常需要传递结构指针。 7.5 结构数组 可以定义结构数组,数组中的每个元素都是一个结构变量。例如: ```c struct student class[10]; // 定义包含10个学生的结构数组 ``` 7.6 内存对齐与结构体大小计算 编译器为了优化内存访问速度,会对结构体内的成员进行内存对齐。结构体的实际大小可能大于各成员大小之和,因此在计算结构体大小时需要注意内存对齐规则。 7.7 联合(Union) 联合与结构类似,但联合内的所有成员共享同一块内存空间,成员的地址相同。这意味着,任何时候只有一个成员的值是有效的。联合的大小等于其最大成员的大小。 例如: ```c union variant { long num; char name[20]; float score; }; ``` 7.8 匿名结构与联合 在定义结构或联合时,可以省略结构或联合名,这种类型称为匿名结构或匿名联合。它们通常用作其他结构或联合的成员。 7.9 枚举(Enumeration) 枚举是C语言中另一种构造类型,用于定义一组符号常量。枚举类型定义如下: ```c enum Color {Red, Green, Blue}; ``` 枚举类型`Color`有三个枚举常量:`Red`, `Green`, `Blue`,它们的默认值分别为0、1、2。 总结,C语言中的结构与联合提供了组合不同数据类型的能力,使得数据结构设计更加灵活,能够更好地模拟现实世界中的复杂对象。结构与联合的使用涉及定义、初始化、内存管理、函数调用等多个方面,是C语言编程中的重要概念。