网上看了一些,自己归纳了一下传值大概分为已下3种:1:值传递 2:地址传递 3:引用传递1:值传递
1:值传递
#include <stdio.h>
#include <stdlib.h>
void exchange(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
printf("%d %d\n",x,y);
}
int main()
{
int a,b;scanf("%d %d",&a,&b);
exchange(a,b);\\exchange(a,b)相当于只是把a,b的值传递给了x,y所以交换了x,y的值,但是并没有将a,b的值转化,等价于x=a,y=b中,交换xy值不影响ab量
printf("%d %d\n",a,b);
system("pause");
return 0;
}
运行程序观察输出可以看出xy交换成功但是ab值并未发生变化
2:地址传递
#include <stdio.h>
#include <stdlib.h>
void exchange(int *px,int *py)
{
int temp=*px;
*px=*py;
*py=temp;
printf("%d %d\n",*px,*py);
}
int main()
{
int a=1,b=2;
exchange(&a,&b);// 注意此时是把a的地址给px,b地址传递给py,px=&a,然后*px就可以对a,b进行修改
printf("%d %d",a,b);
system("pause");
return 0;
运行程序发现xy,ab都交换成功都分别为1 2
3:引用传递
#include <stdio.h>
#include <stdlib.h>
void exchange(int &px,int &py)
{
int temp=px;
px=py;
py=temp;
printf("%d %d\n",px,py);
}
int main()
{
int a=1,b=2;
exchange(a,b);//这里ab将自己的地址传递给了px,py,然后pxpy就可以对ab进行操作,输出结果2 1,2 1
printf("%d %d",a,b);
system("pause");
return 0;
}