2017-03-04 107 views
-2

我想在整個數組中用字母'I'初始化,在C++中聲明一個全局6x6字符數組。獲得全局字符數組(2D)

char result[] = new char[6][6]; 
result={{'I','I','I','I','I','I'},{'I','I','I','I','I','I'},{'I','I','I','I','I','I'}, 
{'I','I','I','I','I','I'},{'I','I','I','I','I','I'},{'I','I','I','I','I','I'}}; 

錯誤: 1.錯誤:數組初始化必須是初始化列表或 字符串文字 2. C++需要用於所有聲明類型說明符。如果我在main()中初始化,這個錯誤消失。

查詢已解決。

+1

更改'I' - >''I'' –

回答

0

爲了使用編譯時常量char值,需要用一對逗號括起字符:'I'。您的程序正試圖將名爲I的變量或常量的值放入數組中。

+0

謝謝你這麼多,這是非常愚蠢的我的。但是,第一個錯誤仍然存​​在。我相應地編輯了問題。 – Sim

+0

Operator new返回一個指向char的指針,而不是數組類型。由於您使用的是靜態大小的數組,因此您最好使用靜態初始化: char result [6] [6] {'I','I','I','I', 'I','I'}, ... };' –

1

你試過'我'而不是嗎? 類似於

char result[] = new char[6][6]; 
result={{'I','I','I','I','I','I'},{'I','I','I','I','I','I'},{'I','I','I','I','I','I'},{'I','I','I','I','I','I'},{'I','I','I','I','I','I'},{'I','I','I','I','I','I}}; 
+0

儘管你的回答是正確的,但你缺乏確定性使得你似乎過早地發佈了一個答案,希望獲得免費的聲譽。 – byxor

+0

是的,這刪除了第三個錯誤謝謝你 – Sim

+0

@BrandonIbbotson這是真的。我是一個新的stackoverflow用戶,我甚至沒有聲望投下這個問題。請將你的成熟度問題投給這個問題,不要理會你已經這麼做了。 – Barath

1

您可以在不同的步驟中進行定義和初始化。首先,你不能在全球範圍內有一般性陳述(如作業)。其次,你不能真的分配給一個數組。第三,你沒有數組並嘗試改變指針。

錯誤是因爲第一個原因。

簡單的解決方法就是使用實際的陣列,並做定義和初始化在一個步驟:

char result[6][6] = { 
    { 'I', 'I', 'I', 'I', 'I', 'I' }, 
    { 'I', 'I', 'I', 'I', 'I', 'I' }, 
    .... 
}; 
+0

謝謝你的信息:) – Sim