初始化C ++结构

时间:2011-02-28 19:38:04

标签: c++ winapi struct initialization

struct CUSTIOMSTRUCT
{
    FLOAT x, y, z;
    DWORD color;
};

CUSTOMSTRUCT MyVertex = {320.0f, 50.0f, 1.0f, 0xFF00FFCC};

我不明白那一部分:

{320.0f, 50.0f, 1.0f, 0xFF00FFCC};

我必须把它们整理好吗?

抱歉,我是C#家伙。

3 个答案:

答案 0 :(得分:5)

是的,你必须把它们整理好。 C语言的C99版本提供了“标记的”聚合初始值设定项,它允许一个“把它们”排序,但它不是在C ++中(还是?)。

答案 1 :(得分:2)

是的,它们必须按照声明的顺序排列,所以{x,y,z,color}。

答案 2 :(得分:-5)

更确切地说,

{}运算符返回一些内存字节, 所以当你使用

{320f,50f,1f,0xFF00FFCC} 它返回一个连续的16字节内存,然后通过" memcpy"对struct变量的命令。

因此,如果你把它们排除在外,程序编译得很好,但不能正常工作。

更好的选择是使用构造函数。