数组在传递的时候不是值传递,而是指针传递。
int array[10];
void setArray(int a[]);//这个函数在调用的时候是setArray(array);传递整个数组,但是其实传递的是array的首地址,相当于
int *p=array[0];setArray(p);
编译器在检查声明的时候,在void setArray(int a[]);发现int后的a有[],便认定此处的数据类型其实是一个整形指针。所以也可以写成(int *a);
void setElement(int a);//这个函数在调用的时候是setElement(array[i]);
由于是对单个数值进行值传递的操作,因此传递数组的元素,需要包括下标,这个时候就是普通的值传递,数组元素的值不会改变。它和传递普通的参数是一样的。 |