首页 未命名正文

linux编程_C语言之共用体

云返利网 未命名 2020-05-26 09:06:35 15 0

1:共用体(union)类型的界说
union myunion
{
int a;
char b;
};
int main(void)
{
myunion u1;
u1.a = 23;
printf("u1.b = %d\n", u1.b);    //23
printf("&u1.a = %p \n",&(u1.a));  //&u1.a = 0xbfbe5c04
printf("&u1.b = %p \n",&(u1.b));  //&u1.b = 0xbfbe5c04
 
}

总体上来讲共用体和结构体的界说方式很类似,使用方式也基本一样
2:共用体和结构体的区别
  (1)结构体类似于一个包裹,结构体中的成员相互是自力存在的,漫衍在内存的差别单元中,他们只是被打包成一个整体叫做结构体而已;共用体中的各个成员其实是一体的,相互不自力,他们使用统一个内存单元。可以明白为:有时候是这个元素,有时候是谁人元素。更准确的说法是统一个内存空间有多种注释方式。也就是说共用体是统一个内存空间,内里存放的数值(二进制)是一样的,使用u1.a去接见这个内存时是按int类型去剖析这个内存空间,使用u1.b去接见这个内存时是按char类型去剖析这个内存空间。总的来说共用体就是统一块存放着二进制数的内存空间的差别明白方式。
  (2)使用sizeof去丈量共用体的巨细时,测得的是union中各个元素内里占用内存最大的谁人元素的巨细。由于这样才能够存放下所有的元素。
  (3)union中的元素不存在内存对齐的问题,由于union中现实只有1个类型的内存空间,都是从统一个地址最先的(最先地址就是整个union占有的内存空间的首地址),以是不涉及内存对齐。
3:共用体的主要用途

【关于云返利网】

云返利网是阿里云、腾讯云、华为云产品推广返利平台,在各个品牌云产品官网优惠活动之外,云返利网还提供返利。您可以无门槛获得阿里云、华为云、腾讯云所有产品返利,在官网下单后就可以领取,无论是自己用、公司用还是帮客户采购,您个人都可以获得返利。云返利网的目标是让返利更多、更快、更简单!详情咨询13121395187(微信同号)