在C++中,數組不能簡單地作爲參數傳遞。在C++中將函數參數作爲函數參數傳遞
void doSomething(char charArray[])
{
// if I want the array size
int size = sizeof(charArray);
// NO GOOD, will always get 4 (as in 4 bytes in the pointer)
}
我有沒有辦法知道數組有多大,因爲我只有一個指針數組:如果我創建了一個功能,像這樣的意思。
在不更改方法簽名的情況下,我可以通過哪種方式獲取數組大小並迭代它的數據?
編輯:只是關於解決方案的補充。如果字符數組,具體而言,被初始化像這樣:
char charArray[] = "i am a string";
則\0
已經附加到該陣列的端部。在這種情況下,答案(標記爲接受)可以開箱即用,可以這麼說。
實際上這裏有一個相當大的誤解,你的例子中的語法沒有任何意義:函數在棧上獲取未知數量的數據。忽略你原來的語法,並給函數簽名`void doSomething(char * charArray)`。如果你用char數組[10]; doSomething(array) //c-faq.com/aryptr/aryptrparam.html – kfsone 2013-06-02 17:53:24