切记:
数组作为形参,退化为指针,sizeof(指针)=4,因此不能再被调用函数中利用sizeof(数组名)/sizeof(数组类型)求数组的长度
举个栗子:
void sort(int array[])
{
int j=0,n=0;
int max=array[0];
for(j=1;j<sizeof(array)/sizeof(int);j++)
{
if(array[j]>max)
{max=array[j];n=j;
}
}
printf("the max is :%d\n",max);
printf("it is the %d th number.\n",n);
}
int main()
{
int a[]={1,2,23,45,28,100,89,3};
int length=sizeof(a)/sizeof(int);
sort(a);
return 0;
}被调用函数将只执行一次,得不到正确的结果。
本文通过一个具体的示例解释了为什么在C/C++中当数组作为函数参数传递时,不能直接使用sizeof运算符来获取其长度。这是因为数组退化成了指针,导致sizeof运算符返回的是指针的大小而非数组的实际大小。
1235

被折叠的 条评论
为什么被折叠?



