簡單的一行代碼無法編譯,出了什麼問題?二維數組未正確初始化
char *words[256] = new char[numOfWords][256];
array must be initialized with a brace-enclosed initializer
簡單的一行代碼無法編譯,出了什麼問題?二維數組未正確初始化
char *words[256] = new char[numOfWords][256];
array must be initialized with a brace-enclosed initializer
您聲明瞭一個指向char
的256個指針的數組。錯誤消息很明顯 - 數組需要使用大括號初始化程序進行初始化。所以,如果你想保持你的聲明,這樣做:
char* words[256] = { new char[wordlength], ... };
// ^^^ this is effectively your numOfWords
或者,您也可以完全離開了初始化,後來分配單獨的元素,例如在一個循環。請注意,如果您動態分配元素,您也有責任正確刪除它們。
如果你想有一個指針指向256個char
小號數組,數組那麼這個:
char (*words)[256] = new char[numOfWords][256];
或者:char * words [256] = {new char [numOfWords]}; –
@Xploit可能是,但上面的OP的評論暗示了另外一點,IMO。 – jrok
謝謝!作品!我的反向詞功能現在是成功的:) – MasterGberry
當你聲明一個二維數組,把它當做只是指向其他數組的數組。因此,要做你在問什麼:
char *words[] = new char*[256];
for (int i = 0; i < 256; ++i) {
words[i] = new char[numOfWords];
}
'words'不是一個二維數組,而是一個256個char *數組。作爲C++,爲什麼不使用'std :: vector'或者'std :: array <256,std :: string>'? –
hmjd
我想用numOfWords char [256]的數組,我是這樣做倒退?試圖在沒有任何stl的情況下這樣做 – MasterGberry
這個問題需要更多的上下文,即代碼片段來解釋可能會有用。你想要一個numOfWords數組嗎?但是你似乎正在聲明一個256個元素的數組? – bobestm