C语言之共用体
【摘要】 C语言共用体,又叫联合体,使用关键字union定义。共用体使用同一存储单元存放不同类型的变量。
定义共用体类型变量
基本形式格式:
union 共用体名{
成员表列;
} 变量表列;
123
具体有四种方式 :
1、定义共用体的同时定义变量:
union MyData{ int type; char str;
}data;
1234
2、先定义共用体...
C语言共用体,又叫联合体,使用关键字union定义。共用体使用同一存储单元存放不同类型的变量。
定义共用体类型变量
基本形式格式:
union 共用体名{
成员表列;
} 变量表列;
- 1
- 2
- 3
具体有四种方式 :
- 1、定义共用体的同时定义变量:
union MyData{ int type; char str;
}data;
- 1
- 2
- 3
- 4
- 2、先定义共用体,后再定义变量:
union MyData{ int type; char str;
};
union MyData data;
- 1
- 2
- 3
- 4
- 5
- 3、先定义共用体,再定义共用体别名,再用别名定义变量:
typedef union MyData{ int type; char str;
} Data;
Data data;
- 1
- 2
- 3
- 4
- 5
- 4、匿名共用体,只使用一次
union { int type; char str;
} data;
- 1
- 2
- 3
- 4
- 5
初始化成员列表,只能初始化一个
- 1、定义共用体的同时定义变量,并进行初始化变量:
union MyData{ int type; char str;
}data = {55};
- 1
- 2
- 3
- 4
- 2、先定义共用体,再定义变量,并初始化变量:
union MyData{ int type; char str;
};
union MyData data = {13};
- 1
- 2
- 3
- 4
- 5
- 3、先定义共用体,再定义共用体别名,再用别名定义变量,并初始化变量:
typedef union{ int type; char str;
}Data;
Data data = {88};
- 1
- 2
- 3
- 4
- 5
- 4、匿名共用体,只使用一次,初始化变量:
union{ int type; char str;
}data = {9};
- 1
- 2
- 3
- 4
访问共用体变量
data.type = 22;
或
data.str = 'C';
- 1
- 2
- 3
完整例子
#include <stdio.h>
union { int type; char str;
} data;
int main(int argc,char* argv){ data.type = 22; printf("type:%d\n",data.type); printf("type 大小(单位:byte):%ld\n",sizeof(data.type)); data.str = 'B'; printf("str:%c\n",data.str); printf("str大小(单位:byte):%ld\n",sizeof(data.str)); return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
运行结果:
~/Desktop/c$ gcc main.c -o main
~/Desktop/c$ ./main
type:22
type 大小(单位:byte):4
str:B
str大小(单位:byte):1
- 1
- 2
- 3
- 4
- 5
- 6
共用体总结
- 共用体起作用的成员是最后一次赋值的成员,之前的会被取代;
- 共用体变量的地址和它各成员的地址都是同一个地址,同用一个存储单元
- 不能对共用体整体赋值
- 初始化成员列表,只能初始化一个
- 同种类型的共用体变量可以互相赋值
- 共用体也可以和指针,数组之类的搭配
谢谢阅读。
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/103632095
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)