c语言运行结果01

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:24:36
#include<stdio.h>
void swap1(inta,intb)
{
int temp;
temp=a;a=b;b=temp;
}

void swap2(int &a,&b)
{int temp;
temp=a;a=b;b=temp;
}
void main()
{
int i=3,j=5;
swap1(i,j);
printf("%d %d",i,j);
swap2(i,j);
printf("%d %d\n",i,j);
}
运行结果的结果,感觉都一样的,请高人解释详细点,谢谢!

运行结果不一样
swap1(i,j);
里面参数传递方式是值传递,也就是源程序中i--a,j--b,a=3,b=5,调用函数后a=5,b=3,但i,j不变,运行第一次printf("%d %d",i,j); 结果为 3 5
但swap2(i,j); 为引用或地址调用,把i j的地址给a,b这样在调用函数后a=5,b=3,i,j 也发生了变化i=5,j=3,运行第二次printf("%d %d",i,j); 结果为 5 3
这是两种不同的参数传递方式

#include<stdio.h>
void swap1(int a,int b)
{
int temp;
temp=a;a=b;b=temp;
}

void swap2(int &a,int &b)
{int temp;
temp=a;a=b;b=temp;
}
void main()
{
int i=3,j=5;
swap1(i,j);
printf("%d %d\n",i,j);
swap2(i,j);
printf("%d %d\n",i,j);
}

运行结果是
3 5
5 3
原因和上面说的一样swap2(i,j);调用的是地址,改变了i,j的值