• 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
    ", sizeof(U1));
    20     printf("size of U2: %ld
    ", sizeof(U2));
    21     printf("size of U3: %ld
    ", sizeof(U3));
    22     return 0;
    23 }

    注意U3对齐还是以前面的double进行对齐,所以应该是对齐到下一个8的位数,也就是24,而不是20.

    1 root@xxj-VirtualBox:~/interview# ./union 
    2 size of U1: 4
    3 size of U2: 12
    4 size of U3: 20
  • 相关阅读:
    JavaScript 教程
    C#基础实例
    Angularjs实例5
    Angularjs实例4
    Angularjs 数据过滤
    Angularjs实例3
    Angularjs 数据循环
    Angularjs模块
    Angularjs 数据双向绑定
    Angularjs实例应用
  • 原文地址:https://www.cnblogs.com/linyx/p/3998893.html
Copyright © 2020-2023  润新知