首页 > 代码库 > Union大小
Union大小
在一个union类型结构中,所有的成员公用同样的存储空间,其占用的大小为其成员中需要空间最大者;
union本身只保留一块地址空间,因为只有一个成员真正存储于该地址, 但这块地址也要满足内存对齐原则。
1 #include <stdio.h> 2 3 union U1 { 4 int a; 5 char b; 6 }; 7 8 union U2 { 9 char a[9];10 double b;11 };12 13 union U3 {14 U1 a;15 U2 b;16 char c[18];17 };18 int main() {19 printf("size of U1: %ld\n", sizeof(U1));20 printf("size of U2: %ld\n", sizeof(U2));21 printf("size of U3: %ld\n", sizeof(U3));22 return 0;23 }
注意U3对齐还是以前面的double进行对齐,所以应该是对齐到下一个8的位数,也就是24,而不是20.
1 root@xxj-VirtualBox:~/interview# ./union 2 size of U1: 43 size of U2: 124 size of U3: 20
Union大小
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。