c语言typedef union用法
时间: 2025-02-22 20:09:40 浏览: 78
### C语言 `typedef` 和 `union` 联合体的使用
#### 使用 `typedef` 定义联合体类型
为了提高代码可读性和简洁性,可以使用 `typedef` 来定义一个新的类型名称给联合体。这使得后续代码中可以直接使用这个新名字来声明变量。
```c
// 定义一个名为 Data 的联合体并为其创建别名 UnionData
typedef union {
int intValue;
float floatValue;
} UnionData;
int main() {
// 声明一个 UnionData 类型的变量 data
UnionData data;
// 给联合体内存分配整数值
data.intValue = 10;
}
```
上述例子展示了如何利用 `typedef` 关键字简化复杂类型的命名过程[^2]。
#### 结构化方式展示联合体内部成员共用内存特性
当不同的数据类型被放置在一个联合体内时,它们会共享相同的物理空间。这意味着在同一时间里只有一个成员能够保存有效值;如果向另一个成员赋值,则先前的数据会被覆盖掉。
```c
#include <stdio.h>
typedef union {
char ch;
short shrt;
long lng;
} SharedMemoryUnion;
void printSizes(void) {
printf("Size of char: %zu\n", sizeof(char));
printf("Size of short: %zu\n", sizeof(short));
printf("Size of long: %zu\n", sizeof(long));
// 打印整个联合体大小等于最大成员占用的空间量
printf("Size of union: %zu\n", sizeof(SharedMemoryUnion));
}
int main() {
SharedMemoryUnion smu;
smu.lng = 987654321L;
printf("Long value before changing to char: %ld\n", smu.lng);
smu.ch = 'A';
printf("Char value after change: %c, Long value now is invalid due to overlap.\n", smu.ch);
printSizes();
}
```
这段程序说明了不同类型之间是如何相互影响以及为什么联合体会有特定尺寸的原因[^3]。
阅读全文
相关推荐


















