在C语言中,共用体是一种特殊的数据结构,它的所有成员都占用同一个内存空间,常用的共用体操作有:
1. 定义共用体
定义共用体使用`union`关键字,语法格式如下:
```c
union 共用体名称 {
数据类型 成员名称1;
数据类型 成员名称2;
//...
};
```
例如:
```c
union Data {
int num;
char ch;
float f;
};
```
2. 初始化共用体
共用体的初始化可以类比结构体的初始化,方式如下:
```c
union 共用体名称 共用体变量名称 = {成员1初始值, 成员2初始值, ...};
```
或者使用赋值语句进行初始化:
```c
union 共用体名称 共用体变量名称;
共用体变量名称.ch = 'A';
```
3. 访问共用体成员
共用体的所有成员都占用同一块内存空间,因此只能同时访问其中一个成员,访问共用体成员使用`.`运算符或`->`运算符,例如:
```c
union Data data1;
data1.ch = 'A';
printf("char类型成员:%c\n", data1.ch);
printf("int类型成员:%d\n", data1.num);
printf("float类型成员:%f\n", data1.f);
```
由于共用体的所有成员占用的是同一块内存空间,因此赋值给一个成员后,其他成员的值都将被改变。
4. 共用体作为函数参数
共用体可以作为函数的参数传递,例如:
```c
void printData(union Data data) {
printf("char类型成员:%c\n", data.ch);
printf("int类型成员:%d\n", data.num);
printf("float类型成员:%f\n", data.f);
}
```
或者使用共用体指针作为函数参数:
```c
void printData(union Data *pData) {
printf("char类型成员:%c\n", pData->ch);
printf("int类型成员:%d\n", pData->num);
printf("float类型成员:%f\n", pData->f);
}
```
5. 共用体和结构体的区别
共用体和结构体都可以定义自定义的数据类型,但它们的使用方式和内存分配方式不同:
- 结构体的各个成员占用不同的内存空间,大小等于各个成员大小之和,可以同时访问结构体的多个成员。
- 共用体中各个成员占用同一块内存空间,大小等于最大成员的大小。共用体的各个成员都指向同一块内存,只能同时使用一个成员。
标签:ch,语言,union,成员,内存空间,printf,共用,操作 From: https://www.cnblogs.com/full-stack-linux-new/p/17342482.html