struct A { int i; char c; }a; 请问什么样的操作能让编译器只分配给a 5个字节的存储空间

大神,打扰一下,struct A { int i; char c; }a; 请问什么样的操作能让编译器只分配给a 5个字节的存储空间
最新回答
拿命去忘记你°

2024-06-27 07:01:17

#pragma pack(1) 这句话就是让int i,跟char c连续储存,假如不加这句话,你sizeof (struct a) 输出肯定是8个字节,因为计算机为了减少CPU读取数据的指令周期,实际上char型成员虽然本来只有1个字节,但实际上却占用掉了4个字节。因此实际占用的是8个字节。加了这句话之后char c就会接着i继续存储,别听楼上那个人,他一点都不靠谱
真相是假

2024-06-27 09:41:03

int变量是4字节,char变量是1字节的存储空间,a其实是A结构体,所以就只有4+1的存储空间啦。这个很容易理解的啊。
耳边情话

2024-06-27 18:16:04

#pragma pack(1)