因此,自從我學習了c和C++課程並且我對c指針很感興趣之後(我即將在我的示例中使用new關鍵字,甚至認爲我知道malloc是C的方式)。我總是會回憶起我的老師總是強迫我們使用指針,她從不會對數組進行賦值,她向我們證明,當使用指針而不是使用數組時,彙編語言中需要的命令更少。我想繼續這個良好的做法,但我似乎在努力使用指針,特別是雙指針。關於指針的c/C++問題(雙指針)
可以說我想創建一個沒有使用C++字符串數據類型的字庫,而且我有一個類型爲char的雙指針。
int main()
{
string fileName = "file.txt";
char** wordBank = null;
int wordCount = countWords(fileName); //somefunction to get word count
}
現在我需要分配的存儲空間爲整個銀行足夠大,但如何做到這一點,我相信它是財產以後這樣的IM不確定?
wordBank = new char*[wordCount];
現在我需要爲每個單詞的大小指定空間,這我仍然不確定aobut。
for(int i = 0; i < wordCount; i++)
{
wordLength = getWordLength(fileName, i); // some function to get word length of each...
//... word in the bank
(*wordBank) = new char[wordLength];
}
好吧,我很困惑的最後一部分是通過函數傳遞雙指針。 可以說我有一個函數可以讓我操作整個單詞,讓我說只要傳遞單詞,我會通過函數調用傳遞什麼,函數定義會有什麼。假設我想傳遞整個銀行和一個可以移動指針的數字,我會通過函數調用傳遞什麼,以及函數定義具有什麼功能。對不起所有的問題通常如果我試圖通過編寫簡短的程序來自己回答這些問題,但是我很難編譯它。我很欣賞我收到的回覆。
我試着遠離混合'*'和'[]'。 – motoku
'wordBank [i] = new char [wordLength]'? – angdev
我知道你在問題中說過你不想,但如果你使用C++(如'new'關鍵字所示),那麼我真的非常強烈推薦*使用'std :: string '。在這種情況下沒有什麼好的理由。它會爲你管理所有的內存管理,你不必擔心nul終結符,它會比自己完成所有的分配和拷貝效率低。你的'wordBank'數組也會更好,就像'std :: vector'一樣。同樣,它的效率也不低,但使用起來更容易和更安全。 –