作者tittanlee (tittanlee)
看板C_and_CPP
標題[問題] 請問一個字串陣列的問題。有辦法算出維度嗎?
時間Wed Mar 25 19:17:19 2009
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
1F:→ chrisdar:有 Vector 不用?? 03/25 19:55
2F:推 chrisdar: string cmd[] = {"0" , "1", "2" , "3"}; 03/25 19:59
3F:→ chrisdar: cout << sizeof(cmd) << endl; // 128 03/25 19:59
4F:→ chrisdar: cout << sizeof(cmd[0]) << endl; // 32 03/25 19:59
5F:→ chrisdar: cout << sizeof(void*) << endl; // 4 03/25 19:59
6F:→ chrisdar:你猜錯了 cmd並不是指point set而是value set 03/25 20:00
7F:推 softwind:將array傳入一個func 等同於 傳入第一個元素的address 03/25 21:51
8F:→ MOONRAKER:無法得知的,sizeof()是編譯期的macro,他無法在執行期 03/25 22:21
9F:→ MOONRAKER:用來得知資料形態的大小… 03/25 22:21