以一个例子说明传值与传址的区别
#include<stdio.h>
// 指针传址 ,让实参和形参之间产生联系
void swap(int *pa,int *pt){
int temp = *pa;
*pa = *pt;
*pt = temp;
}
//传值,当实参传给形参的时候,形参是实参的一份临时拷贝,又创造了一个新的地址空间,所以对形参的修改不会影响实参
//void swap(int m,int n){ //并未交换a、b ,出bug了吧,可以debug试试,看看m,n的地址时候和a,b一样,如果不一样
// //那就起不到交换a,b的作用了
// int temp = m;
// m = n;
// n = temp;
//}
//交换两个变量的值
int main(){
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
printf("交换前a = %d,b = %d",a,b);
swap(&a,&b);
printf("交换后a = %d ,b=%d",a,b);
}
总结:
1.要让实参与形参之间产生联系,就用指针。
2.为何使用m,n不能交换a,b的值:当实参传给形参的时候,形参是实参的一份临时拷贝,又创造了一个新的地址空间,所以对形参的修改不会影响实参