相关疑难解决方法(0)

C/C++中的联合大小

C/C++中联合的大小是多少?它是最大数据类型的sizeof吗?如果是这样,如果联合的较小数据类型之一处于活动状态,编译器如何计算如何移动堆栈指针?

c c++ sizeof unions

41
推荐指数
4
解决办法
6万
查看次数

联盟规模大于预期.如何在这里进行类型对齐?

#include <stdio.h>

union u1 {
    struct {
        int *i;
    } s1;
    struct {
        int i, j;
    } s2;
};

union u2 {
    struct {
        int *i, j;
    } s1;
    struct {
        int i, j;
    } s2;
};

int main(void) {
    printf("        size of int: %zu\n", sizeof(int));
    printf("size of int pointer: %zu\n", sizeof(int *));
    printf("   size of union u1: %zu\n", sizeof(union u1));
    printf("   size of union u2: %zu\n", sizeof(union u2));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果是:

$ gcc -O -Wall -Wextra -pedantic -std=c99 …
Run Code Online (Sandbox Code Playgroud)

c pointers sizeof alignment unions

4
推荐指数
1
解决办法
958
查看次数

标签 统计

c ×2

sizeof ×2

unions ×2

alignment ×1

c++ ×1

pointers ×1