看板 C_and_CPP 關於我們 聯絡資訊
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
chrisdar:有 Vector 不用?? 03/25 19:55
chrisdar: string cmd[] = {"0" , "1", "2" , "3"}; 03/25 19:59
chrisdar: cout << sizeof(cmd) << endl; // 128 03/25 19:59
chrisdar: cout << sizeof(cmd[0]) << endl; // 32 03/25 19:59
chrisdar: cout << sizeof(void*) << endl; // 4 03/25 19:59
chrisdar:你猜錯了 cmd並不是指point set而是value set 03/25 20:00
softwind:將array傳入一個func 等同於 傳入第一個元素的address 03/25 21:51
MOONRAKER:無法得知的,sizeof()是編譯期的macro,他無法在執行期 03/25 22:21
MOONRAKER:用來得知資料形態的大小… 03/25 22:21