#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
请问结果为什么不一样呢?
printf("%d\n",sizeof(a));的时候a是一个数组,其类型是int [5] ,sizeof操作符得到大小为:sizeof(int)*5=20
printf("%d\n",get(a));的时候,将a传递给int *p,退化为一个指针,sizeof指针结果为4.
形参是指针,会直接改变实参的值。因为传的是地址,画画内存图就清楚了。
1楼正解