在C中,结构数组如何在内存中查找

时间:2018-05-09 22:38:09

标签: c pointers struct

我试图理解一系列结构在内存中是什么样的。假设我有以下

struct b{
     int x;
     int y;
     int z;
};
b barray[100];

所以现在barray是一个结构数组,其中barray是指向第一个结构的指针,即barray =& barray [0]。 如果int占用2个字节,然后说struct b占用6个字节,让我们说barray = 1000,指针的大小就是4个字节。然后是barray + 1 = 1004还是1006? 我的意思是数组是一个指针数组,每个指针指向它的结构实例,或者是所有100个结构放在一个连续的内存位置,并将数组的索引递增到下一个结构?

1 个答案:

答案 0 :(得分:2)

数组是c中连续的内存块,因此结构数组的大小为sizeof(struct b)*number_of_structs。所有结构都在数组中分配。

请注意,在您的示例中sizeof(struct b)不能保证为6,因为允许编译器插入填充以对齐结构的字节对齐 - 您可以使用" packed"如果你愿意,可以避免这种情况但可能会影响性能。 Structure padding and packing