(这里数组名也算指针)
比如
int
max(int
a,int
b)
这时候如果调用这个函数max(x1,x2)仅仅将x1和x2的数值传递给函数max,a与x1占有不同的内存区域
int
max(int
*a,int
*b)
这时候如果调用这个函数max(&x1,&x2)则将x1、x2的地址传递给a、b,a指向x1的地址,也就是说a可以操控x1的数值。
如果想具体了解可以参看谭浩强教授写的~c语言程序设计~很好很强大~
1、数组作为函数参数时传递的是指向这个数组的指针的复制品(即 int *的复制品,指针的值与原来的相同);2、你在函数sz(int *, int)里面利用复制得来的指针指向了原来的数组,并进行修改,因此这个地址上的值就被修改了(即,你通过int* a找到了数组的具体地址,并且进入该地址a[1],修改里面的值,所以原数组被改了);