[問題] 請問一個字串陣列的問題。有辦法算出維度嗎?

看板C_and_CPP (C/C++)作者 (tittanlee)時間16年前 (2009/03/25 19:17), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/1
int main() { string cmd[] = {"test" , "vi", "let" , "ls"}; printArr(cmd , 4); 有一個問題是用肉眼可以看出他的維度是4,有辦法寫出什麼function可以回傳此陣列的數量嗎? } void printArr(string *cmd , int num) { for (int i = 0 ; i < num ; i++) cout << cmd[i] << endl; } 我只有想到一個方法是用sizeof(cmd),然後在除以4,因為一個指標是4byte,這樣就可以算出有幾個指標了。 但是假如,我沒有傳陣列的數量,在printArr這個函數裡面,有辦法得知此陣列的大小嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.5.224.98

03/25 19:55, , 1F
有 Vector 不用??
03/25 19:55, 1F

03/25 19:59, , 2F
string cmd[] = {"0" , "1", "2" , "3"};
03/25 19:59, 2F

03/25 19:59, , 3F
cout << sizeof(cmd) << endl; // 128
03/25 19:59, 3F

03/25 19:59, , 4F
cout << sizeof(cmd[0]) << endl; // 32
03/25 19:59, 4F

03/25 19:59, , 5F
cout << sizeof(void*) << endl; // 4
03/25 19:59, 5F

03/25 20:00, , 6F
你猜錯了 cmd並不是指point set而是value set
03/25 20:00, 6F

03/25 21:51, , 7F
將array傳入一個func 等同於 傳入第一個元素的address
03/25 21:51, 7F

03/25 22:21, , 8F
無法得知的,sizeof()是編譯期的macro,他無法在執行期
03/25 22:21, 8F

03/25 22:21, , 9F
用來得知資料形態的大小…
03/25 22:21, 9F
文章代碼(AID): #19oXB0-O (C_and_CPP)
文章代碼(AID): #19oXB0-O (C_and_CPP)