大一开始学的C语言,大三复习了一遍,现在又复习了一遍才弄懂值传递问题
指针传递
demo1
void swap(int a ,int b ){
int temp;
temp=a;
a=b;
b=temp;
}
demo2
void swap(int *a,int *b){
int *temp;
temp=a;
a=b;
b=temp;
}
demo1和demo2两者实现的原理都是一样的,都是单向的值传递,形参的改变并不会影响到实参的改变。
demo3
void swap(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
demo3实现的并不是简单地将实参直接传入,而是将实参传入函数时,将a所指向的变量的值变为b所指向的变量的值,同理,b所指向的值变为a所指向的值。
改变不是a或者b的地址,而是将a或b地址所指向的数据进行交换。