C语言共用体的定义及使用语法
共用体
C语言中,什么是共用体?通俗地加深记忆的理解方式是实现了内存位置共享(共用)的结构体。当然,这仅是个人的观点,仅供参考。C语言中的共用体可以在同一个内存地址上存储不同数据类型——即不同数据类型的共用体成员。虽然如此,但是多个共用体成员不能同时存储值,任何时候,都只能是其中之一存储值。
共用体定义语法
C语言中共用体的定义语法与C语言的结构体基本类似,不同的是,共用体需要使用union关键词来定义,语法如下:
union tag
{
member1;
member2;
...
memberN;
} variable-list;
提示:共用体中,成员member的声明方式,与声明变量的方式一样,比如 int x;
提示:tag为通用体的标签(名称);
提示:variable-list声明共用体变量,一般为全局变量,多个变量之间使用英文逗号隔开;
共用体实例声明定义
共用体也是C语言的数据结构,不过是可以自定义的,因此声明定义某一类共用体的变量,跟声明其它基本数据的变量的方式类似,不同的是,共用体的名称之前还应当加个union,比如:
union tag varName;
提示:共用体所占用的内存空间大小应该能够存储共用体中最大的成员。
共用体成员访问语法
unionVarName.menber
共用体实例代码
注意下方实例代码解析的内容:
#include <stdio.h>
#include <string.h>
union student{
int id;
int score;
char name[30];
};
int main() {
union student a;
a.id = 1;
printf("%d\n",a.id);
a.score = 100;
printf("%d\n",sizeof(a));
strcpy(a.name, "xiaoming");
printf("%d\n",sizeof(a.name));
return 0;
}
代码编译运行,得到输出:
1
32
30
实例解析
如上代码,在对student类型的共用体a的成员进行赋值的时候,为什么要赋值一次,就printf()输出一次,而不是直接将三个成员都赋值了再一次输出呢?这是因此共用体在任何时候都只能有一个成员存储值,要不然可能导致最后一次赋值的成员之前的所有成员的值损坏,大家可以同时赋值然后编译运行试一试。
免责声明:内容仅供参考,不保证正确性!