Code sec:
#include<stdio.h>
int GetSize(int data[])
{
return sizeof(data);
}
int main()
{
int data1[]={1,2,3,4,5};
int size1=sizeof(data1);
int* data2=data1;
int size2=sizeof(data2);
int size3=GetSize(data1);
printf("%d,%d,%d\n",size1,size2,size3);
return 0;
}
Result:20,8,8(64位gcc下得出,不同编译器下可能不同)
Analysis:data1为标准数组,因而sizeof得出数组大小,5*4=20.
data2为指针,因而sizeof得出指针大小,为8.
data1作为形参时,自动退化为指针,因而得出指针大小,为8.
Summary: 数组名和同类型指针是有区别的。数组作为参数传递时,自动退化为同类型指针。