|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
程序为从大到小输出两个整数,下面是正确的程序
#include <stdio.h>
int main()
{
int a, b;
int* p1, * p2;
int r(int* p1, int* p2);
scanf("%d,%d", &a, &b);
p1 = &a;
p2 = &b;
if (a < b)
{
r(p1, p2);
}
printf("%d>%d", *p1, *p2);
return 0;
}
int r(int* p1, int* p2)
{
int p; //疑问1:这里可以是int *p吗?
p = *p1; //疑问2:交换值的这三行可以是p=p1;p1=p2;p2=p吗?
*p1 = *p2;
*p2 = p;
}
也就是这个函数可以是这个吗?
int r(int* p1, int* p2)
{
int *p;
p = p1;
p1 = p2;
p2 = p;
}
你既然知道不对,那就说明这个不行呀
你交换指针,相当于把地址换了下,你改变了地址对应的值了吗?
好比,你有两个盒子,盒子里面有东西,你如果不打开盒子把里面的东西拿出来交换,你纯粹地把两个盒子移来移去,你觉得你能改变里面的东西吗?
|
|