发布网友 发布时间:2024-12-12 17:54
共3个回答
热心网友 时间:2024-12-14 02:58
swap里你交换的是形参p1\p2的地址,但是参数值不是引用,所以不传出,影响不到main里的p1和p2。
void swap(int *&p1,int *&p2)热心网友 时间:2024-12-14 02:58
你的程序传递的是p1、p2变量的值,当然不会满足你的要求了。
如果你传递的是p1、p2变量的地址,就可以满足你的要求。
程序如下:
#include<stdio.h>
void swap(int **p1,int **p2)
{
int *t;
t=*p1;*p1=*p2;*p2=t;
}
void main()
{
int a,b,*p1,*p2;
scanf("%d,%d",&a,&b);
p1=&a,p2=&b;
swap(&p1,&p2);
printf("%d,%d",*p1,*p2);
}
记住:要从函数中通过变量带回计算结果,必须传递变量的地址!!追问但是p1,p2变量的值也是地址啊,这怎么理解?
追答好吧,看看这个场景:
int a=10,b=20,*p1,*p2,*p11,*p21;
int *t;
p1=&a;p2=&b;
p11=p1;p21=p2;//相当于你原来程序中函数调用传递的地址
t=p11;//模拟swap语句
p11=p21;p21=t;
到此,原来p1和p2的地址值没有发生变化吧,所以维持原值不变。
热心网友 时间:2024-12-14 02:59
三等功第三个色条纹特务