数组和单独初始化之间的区别?

时间:2012-12-16 17:32:52

标签: c++

所以说我有一个'结构',如:

struct Vertex
{
    float posX, posY, posZ;
}

我声明了3个浮点数(约4个字节)的值。总而言之,这个'结构'大约是12个字节。

但如果我这样写:

struct Vertex
{
    float pos[3];
}

我仍然可以获得与上述相同的效果吗? 12个字节?有什么区别?

2 个答案:

答案 0 :(得分:2)

理论上,在第一种情况下,允许编译器在各个字段之间添加填充,而在第二种情况下,它是不允许的(数组必须是连续的元素序列)。

所以,理论上 第一个struct可能占用更多空间,实际上它们可能具有相同的大小/内存布局。

显然,在第一种情况下,您可以使用三个成员的名称访问此类数据,而在第二种情况下,您将使用pos成员上的数组语法。

答案 1 :(得分:2)

我可以想到一个不同之处:如果你的pack大于变量的大小,编译器将填充posX,posY,posZ以使它们很好地对齐。 当你进行二进制读/写操作时,最重要的是你。

通常使用某些填充有严重的性能原因,因为带有未对齐数据的馈送处理器可能会产生严重后果。