有一个程序,如下:
void inv(int x[],int n) /*形参x是数组名*/
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{j=n-1-i;
temp=x[i];x[i]=x[j];x[j]=temp;}
return;
}
main()
{int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
inv(a,10);
printf("The array has benn inverted:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
在这里,第一行void inv(int x[],int n)中的x[]是什么意思?
在主函数的的第七行,inv(a,10); 这是把数组a[10]的首地址赋给数组x[]吗?要是是的话,为什么这样做呢?
參考答案:一维数组参数传递时
f(int x[100]) 和 f(int x[10]) 实事上是一样的.
编译器都把它们看成f(int *x)
所以说[]里面的数是没有意义的.
你可以写成f(int x[])
另外为了防止越界,再加一个参数表示元素个数
f(int x[] ,int n)