C语言中形参与实参怎么传递?

Python019

C语言中形参与实参怎么传递?,第1张

我简单描述一下~c语言传递参数机构是这样的~非指针类的数据传递参数时传数值,指针类数据传递参数时传地址

(这里数组名也算指针)

比如

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],修改里面的值,所以原数组被改了);