假设我有一个结构:
struct guitar{
long guitarID;
short brand:3;
short strings: 6;
short price;
}x[5][5]; //Thanks chux
如果 x 的地址是 0xaaa 并且内存以 4 的倍数对齐,那么 x[1] 的地址会是什么?
我想知道的另一件事是品牌和字符串之间的数字范围是多少,因为它们受到位域的影响?
最佳答案
假设长 8 字节,短 2 字节,内存为 4 字节对齐,结构的大小为 8 字节 + 3 位 + 6 位 + 2 字节 = 8 + 4 = 12 字节。
x[1] 只不过是 &x[1][0]。
如果 x 是 0xaaa,则 x[1] 是 0xaaa + (5 * 12) = 0xaaa + 60。
所以 x[1] 距离 x 有 60 个字节。
关于c - 内存位置和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248787/