在C中函数有两个参数,分别是形参和实参
形参是自定义的函数所拥有的参数,在自身中可以被使用,自身外不可用,也就是他的作用域是定义它的函数本身
实参是主调函数的参数,在被调函数中不可用
例如:
int swap(int a,int b){.......}
int main(void){
int s=1,d=2;
swap(s,d);
}
开头的a,b就是swap的形参,而在main中定义的s,d是实参
当我们在main中调用swap时,main会将s,d的值传给swap的形参,于是swap的形参就具备了和main中对应实参相同的值,而这样在swap中做交换,结果只是交换了形参的值而不会影响到main中实参的值。
但若是使用指针,如下
int swap(int *a,int *b){.......}
int main(void){
int s=1,d=2;
swap(&s,&d);
}
&是取地址运算符
当我们在main中调用swap时,就会把s,d的地址作为值传给在swap定义的两个指针形参*a *b
于是他们就具备了实参s,d的地址,
*是取地址的值运算符
此时的*a,*b 实质对应 main中实参s,d而不是第一个例子中s,d的值
这样我们交换*a,*b的值,实质是交换指针a,b地址对应的变量s,d的值,于是就实现了改变main中实参的值的效果
= =结束啦