首页 新闻 会员 周边 捐助

关于c语言传参问题

1
[已解决问题] 解决于 2012-05-22 21:20

#include<stdio.h>
int main(){
int a[5]={1,2,3,4,5};
printf("%d\n",sizeof(a));
printf("%d\n",get(a));
}
int get(int *p){
return sizeof(p);
}

结果:

20

4

请问结果为什么不一样呢?

思仔的主页 思仔 | 菜鸟二级 | 园豆:207
提问于:2012-04-06 12:47
< >
分享
最佳答案
3

printf("%d\n",sizeof(a));的时候a是一个数组,其类型是int [5] ,sizeof操作符得到大小为:sizeof(int)*5=20

printf("%d\n",get(a));的时候,将a传递给int *p,退化为一个指针,sizeof指针结果为4.

奖励园豆:5
zsounder | 老鸟四级 |园豆:2819 | 2012-04-06 12:55
其他回答(2)
0

形参是指针,会直接改变实参的值。因为传的是地址,画画内存图就清楚了。

Fangjins | 园豆:202 (菜鸟二级) | 2012-04-06 13:23
0

1楼正解

Timco | 园豆:198 (初学一级) | 2012-04-21 12:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册