看板 C_and_CPP 關於我們 聯絡資訊
我一直以為 對一個靜態陣列取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
james732:印象中只要傳至function 陣列的長度都要自己傳過去 04/23 02:36
sandr1983:重點在於你傳了什麼東西進去. 你傳的是一個普通指標 04/23 02:44
sandr1983:普通指標長度32/8=4還蠻正常的阿 04/23 02:46
sandr1983:你的是call by address 你可以再函式內寫修改就知道了 04/23 02:49
littleshan:你參數寫 double a[] 和 double *a 是一樣的意思 04/23 08:05
QQ29:我記得其實沒有什麼call by address嗎? 所以副程式就辦法取得 04/23 13:23
QQ29:長度嚕 04/23 13:24
stonehomelaa:傳過去就是一個pointer.... 04/23 14:11
stonehomelaa:長度要自己傳呀 04/23 14:12
pcb001:Q大的推文意思應是「本質上嚴格來說C只有call by value」吧 04/24 00:57