gpt4 book ai didi

c - 带 union 的 sizeof 结构

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:00 26 4
gpt4 key购买 nike

<分区>

我对整个“数据对齐”的事情感到很困惑:

#include <stdio.h>
int main(){
struct st{
int i,*p;
char c;
union { char type[4]; unsigned char d;} un;
};

struct st s1={25,&a,'X',"asdf"};
printf("sizeof s1 is %d",sizeof(s1));
return 0;
}

由于数据对齐,我认为由于大小

int i : 4 bytes
int *p : 8 bytes
char c : 1 byte(+3)
union : 4 bytes

输出应该是 20,但是这个输出 sizeof s1 is 24!为什么输出24?这是否考虑 8 个字节的 int *p?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com