|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 yu457001 于 2014-5-21 10:50 编辑
谁能帮我解答个问题
关于指针和变量的使用中是否交换指向位置和值是否交换的
我怎么就看不出来它们为什么交换了又为什么没有交换。拜托各位给讲解一下,谢谢
两段代码如下
#include<stdio.h>
int jiaohuan(int *p3,int *p2);
int main()
{
int *p1,*p2,a=10,b=6;
p1=&a;
p2=&b;
printf("a=%d,b=%d\n",a,b);//通过交换,a,b的值没有改变
printf("p1=%d,p2=%d\n",p1,p2);//输出p1,p2指向的地址
printf("p1=%d,p2=%d\n",*p1,*p2);
jiaohuan(p1,p2);
printf("a=%d,b=%d\n",a,b);//通过交换,a,b的值没有改变
printf("p1=%d,p2=%d\n",p1,p2);//输出p1,p2指向的地址
printf("p1=%d,p2=%d\n",*p1,*p2);//输出p1,p2指向的地址存放的值
printf("\n\n");
return 0;
}
int jiaohuan(int *p3,int *p4)
{
int t;
if(*p3>*p4)
{
t=*p3;
*p3=*p4;
*p4=t;
}
return 0;
}
运行结果如下
------------------------------------
#include<stdio.h>
int main()
{
int *p1,*p2,a=10,b=6;
int *p;
p1=&a;
p2=&b;
printf("输出最初a,b的值a=%d,b=%d\n",a,b);
printf("输出最初p1,p2指向的地址p1=%d,p2=%d\n",p1,p2);
printf("输出最初p1,p2指向的地址p1=%d,p2=%d\n",*p1,*p2);
if(a>b)
{
p=p1;
p1=p2;
p2=p;
}
printf("交换后a,b的值a=%d,b=%d\n",a,b);
printf("交换后p1,p2指向的地址p1=%d,p2=%d\n",p1,p2);
printf("交换后p1,p2指向的地址存放的值p1=%d,p2=%d\n",*p1,*p2);
printf("\n\n");
return 0;
}运行结果如下
|
-
-
|