2013-12-18 147 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}};