0
点赞
收藏
分享

微信扫一扫

C语言之共用体


C语言共用体,又叫联合体,使用关键字union定义。共用体使用同一存储单元存放不同类型的变量。

定义共用体类型变量

基本形式格式:

union 共用体名{
成员表列;
}

具体有四种方式 :

  • 1、定义共用体的同时定义变量:

union MyData{
int type;
char str;
}data;

  • 2、先定义共用体,后再定义变量:

union MyData{
int type;
char str;
};
union MyData data;

  • 3、先定义共用体,再定义共用体别名,再用别名定义变量:

typedef union MyData{
int type;
char str;
} Data;
Data data;

  • 4、匿名共用体,只使用一次

union {
int type;
char str;
} data;

初始化成员列表,只能初始化一个

  • 1、定义共用体的同时定义变量,并进行初始化变量:

union MyData{
int type;
char str;
}data = {55};

  • 2、先定义共用体,再定义变量,并初始化变量:

union MyData{
int type;
char str;
};
union MyData data = {13};

  • 3、先定义共用体,再定义共用体别名,再用别名定义变量,并初始化变量:

typedef union{
int type;
char str;
}Data;
Data data = {88};

  • 4、匿名共用体,只使用一次,初始化变量:

union{
int type;
char str;
}data = {9};

访问共用体变量

data.type = 22;

data.str = 'C';

完整例子

#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;
}

运行结果:

~/Desktop/c$ gcc main.c -o main
~/Desktop/c$ ./main
type:22
type 大小(单位:byte):4
str:B
str大小(单位:byte):1

共用体总结

  • 共用体起作用的成员是最后一次赋值的成员,之前的会被取代;
  • 共用体变量的地址和它各成员的地址都是同一个地址,同用一个存储单元
  • 不能对共用体整体赋值
  • 初始化成员列表,只能初始化一个
  • 同种类型的共用体变量可以互相赋值
  • 共用体也可以和指针,数组之类的搭配

谢谢阅读。


举报

相关推荐

0 条评论