作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] 原來這樣寫是沒意義的
時間Thu Apr 23 02:27:40 2009
我一直以為
對一個靜態陣列取sizeof 一定可以...
但我剛剛才發現
double pp[20];
init(pp);
void init(double array[])
{
cout<<sizeof(array);
}
原來副程式取 怎麼樣都還是印4
所以說 其實傳遞array 用 array接
根本也跟用*ptr去接是一樣的?? 也都是call by value 複製他的記憶體位置(值)
讓array指到我的pp ,這樣說對嘛?
現在才發現這樣= = 不過這是否意味 根本無法利用副程式 去取得
陣列長度嘛? 一定要自己傳一個數值進去~~
new的應該不可能 我在想 靜態的array 傳給副程式應該是有辦法取得長度吧???
請各位給點指教thx~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.207.187
1F:→ james732:印象中只要傳至function 陣列的長度都要自己傳過去 04/23 02:36
2F:推 sandr1983:重點在於你傳了什麼東西進去. 你傳的是一個普通指標 04/23 02:44
3F:→ sandr1983:普通指標長度32/8=4還蠻正常的阿 04/23 02:46
4F:推 sandr1983:你的是call by address 你可以再函式內寫修改就知道了 04/23 02:49
5F:推 littleshan:你參數寫 double a[] 和 double *a 是一樣的意思 04/23 08:05
6F:→ QQ29:我記得其實沒有什麼call by address嗎? 所以副程式就辦法取得 04/23 13:23
7F:→ QQ29:長度嚕 04/23 13:24
8F:推 stonehomelaa:傳過去就是一個pointer.... 04/23 14:11
9F:→ stonehomelaa:長度要自己傳呀 04/23 14:12
10F:推 pcb001:Q大的推文意思應是「本質上嚴格來說C只有call by value」吧 04/24 00:57