作者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