共用体

来源:互联网 发布:青牛软件怎么样 编辑:程序博客网 时间:2024/05/14 15:14

1.在C语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体;

共用体在定义,说明和使用形式上与结构体相似;(本质的区别在于使用内存的方式上

示例:

 union gy

{

    int i;

   char c;

  float f;

};

这三个成员在内存中使用共同的存储空间。由于共用体中各成员的数据长度往往不同,所以共用体变量在存储时总是按照成员中数据长度最大的成员占用内存空间

结构体变量类型在存储时总是按照各成员的数据长度之和占用内存空间

多个数据需要共享内存或者多个数据每次只取其一时,可以用共用体


例如:定义一个结构体类型:

struct gy

{

int i;

char c;

float f;

}

结构体类型struct gy的变量占用的内存大小为2+1+4=7个字节(不考虑字节对齐);

举个例子:

#include  <stido.h>

union gy

{

char a;

short b;

int c;

 }

int main()

{

union gy t;

t.c=0x12345678;

printf("sizeof(union gy)=&d\n",sizeof(union gy));

printf("%p %p %p\n",&t,a,&t.b,&t.c);

printf("%#x %#x %#x\n",t.a,t.b,t.c);


return 0;

}

执行这段程序可以看到 sizeof(union gy )的值是4;各个成员的起始地址是相同的,这充分说明了联合体哥哥成员公用内存,而联合体占用的存储空间最大的成员为准

原创粉丝点击