2013-12-18 96 views
0

我正在写一些Win32程序。我遇到了一个问题。 我定义点的阵列,就像这样:如何初始化点阵列?

POINT points[3]; 

,现在我想初始化它,我知道这是非法的

POINT points[3] = { (295,295),(200,200),(400,500) }; 

,所以我需要的正确方法。

+3

尝试POINT点[3] = {{295,295},{200,200},{400,500}}; – Matt

+2

你并不真的需要这3个。只要让计算机为你做点数。 – cup

+0

谢谢你,你的方式是正确的。 @Matt – user3116182

回答

2

你可以这样做只是为

POINT points[3] = { 295, 295, 200, 200, 400, 500 }; 

,但一个更安全的事情会是这样

POINT points[3] = { { 295, 295 }, { 200, 200 }, { 400, 500 } }; 

的有趣的是,你最初写的东西不是非法的(你从哪里得到这个想法?)。您在初始化程序中使用的()将导致内部,被解释为逗号运算符。例如,表达式(400, 500)评估为500。这意味着,原来的初始值设定为

POINT points[3] = { 295, 200, 500 }; 

这又相当于

POINT points[3] = { { 295, 200 }, { 500, 0 }, { 0, 0 } }; 

它不会做你想要它做的事情其实治疗,但它肯定是不违法的。

+0

很好的答案。我很抱歉我的表情不严谨。 – user3116182

+0

你能告诉我更多关于内部逗号运算符的信息吗,比如它的源代码。 @AndreyT – user3116182

+0

@ user3116182:原始代码案例中的逗号运算符是内置运算符,是核心C++语言的一部分。它没有“源代码”。网上有很多关于它的信息(http://en.wikipedia.org/wiki/Comma_o​​perator)。 – AnT

0

按照评论:

POINT points[] = {{295,295}, {200,200}, {400,500}};