2、32位系统下,若以下定义和语句,则sizeof(a)的值是 【 】 ,而sizeof(b)的值是 【 】 #pragma pack(8) struct { char ch1; long lo1; char ch2; } a, *b; #pragma pack()
时间: 2024-03-31 20:32:07 浏览: 103
sizeof()里面的值
根据 `#pragma pack(8)` 的指示,结构体中的成员按照 8 字节对齐,因此结构体的大小为 8 字节。对于 `a` 结构体,成员变量 `ch1` 需要占 1 字节,成员变量 `lo1` 需要占 8 字节,成员变量 `ch2` 需要占 1 字节。由于 `lo1` 成员需要 8 字节对齐,因此 `ch1` 和 `lo1` 之间需要填充 7 个字节,`lo1` 和 `ch2` 之间需要填充 7 个字节。因此 `a` 结构体的大小为 1 + 7 + 8 + 1 + 7 = 24 字节。
对于指针变量 `b`,它的类型为结构体指针,所以在 32 位系统下,它的大小为 4 字节。由于结构体指针变量 `b` 没有分配内存,所以 `sizeof(b)` 返回指针类型的大小,即 4 字节。
阅读全文