C语言值传递
void swap(int x,int y){
int temp;
temp=x;
x=y;
y=temp;
printf("\n(swap):%d,%d\n",x,y);
}
void main(){
int a,b;
scanf("%d,%d",&a,&b);
if(a<b) swap(a,b);
printf("\n(main):%d,%d\n",a,b);
}
输出结果:
swap:9 ,5
main: 5,9
虽然在swap函数中暂时使得运行结果显示了交换后的数据,即达到了交换的目的,但实际情况却是随着swap函数的结束,被作为局部参数的形参x,y以及swap函数本身的局部参数temp都将结束其生存期,在内存中的存储空间被释放。因此实参a,b的并未受到影响,依然保持原值。
C语言地址传递
void swap(int *p,int *q){
int temp;
temp=*p;
*p=*q;
*q=temp; }
void main(){
int a,b;
int *pointer_1=&a,
*pointer_2=&b;
scanf("%d,%d",&a,&b);
if(a<b) swap(&a, &b);
printf("\n%d,%d\n",a,b);
}
输出结果:9,5