一个三个数比大小的小问题,求助各位大大!
我已经调用了自定义函数,为啥输出的结果却不对呢?请教各位大大!#include "stdio.h"
#include "conio.h"
void exchange(int x,int y,int z);
int main()
{
int a,b,c;
printf("Please input three numbers: ");
scanf("%d%d%d",&a,&b,&c);
exchange(a,b,c);
printf(" %d > %d > %d\n",a,b,c);// 就是这个地方,为啥输出的结果不对呢?我明明已经调用了自定义函数了啊!黑人问号??
getch();
return 0;
}
void exchange(int x,int y,int z)
{
int temp;
if(x < y)
{
temp = x;
x = y;
y =temp;
}
if(x < z)
{
temp = x;
x = z;
z = temp;
}
if(y < z)
{
temp = y;
y = z;
z = temp;
}
//printf(" %d > %d > %d\n",x,y,z);
}
在此先谢谢各位!!来自一个萌新的疑问。。。
这个x,y,z只是a,b,c的拷贝,要想修改a,b,c的值,请使用指针:
#include "stdio.h"
#include "conio.h"
void exchange(int x,int y,int z);
int main()
{
int a,b,c;
printf("Please input three numbers: ");
scanf("%d%d%d",&a,&b,&c);
exchange(&a,&b,&c);
printf(" %d > %d > %d\n",a,b,c);// 就是这个地方,为啥输出的结果不对呢?我明明已经调用了自定义函数了啊!黑人问号??
getch();
return 0;
}
void exchange(int* x,int* y,int* z)
{
int temp;
if(*x < *y)
{
temp = *x;
*x = *y;
*y =temp;
}
if(*x < *z)
{
temp = *x;
*x = *z;
*z = temp;
}
if(*y < *z)
{
temp = *y;
*y = *z;
*z = temp;
}
//printf(" %d > %d > %d\n",x,y,z);
}
这样才能通过指针修改到a,b,c的值。(因为这时候x,y,z等于a,b,c的内存地址,所以可以去修改) 无符号整形 发表于 2018-8-10 21:35
这个x,y,z只是a,b,c的拷贝,要想修改a,b,c的值,请使用指针:
这样才能通过指针修改到a,b,c的值。(因为 ...
啊啊啊啊!又是指针!!唉,看来我得再重新好好学一遍指针了!!
不过,又是大佬你!!嘻嘻,两次贴都是你帮我解决的,哈哈,谢谢啦! wangdarling 发表于 2018-8-10 21:42
啊啊啊啊!又是指针!!唉,看来我得再重新好好学一遍指针了!!
不过,又是大佬你!!嘻嘻,两次贴都 ...
指针其实很简单,其实就是指向一个内存地址,可以通过指针顺藤摸瓜地修改里面的内容,以及和它相邻(不只是前面一个和后面一个)的内容。
另外,假如我的回答解决了您的问题,请将我的答案设为最佳答案~{:10_254:} 无符号整形 发表于 2018-8-10 21:35
这个x,y,z只是a,b,c的拷贝,要想修改a,b,c的值,请使用指针:
这样才能通过指针修改到a,b,c的值。(因为 ...
#include "stdio.h"
#include "conio.h"
void exchange(int x,int y,int z);
int main()
{
int a,b,c;
printf("Please input three numbers: ");
scanf("%d%d%d",&a,&b,&c);
exchange(a,b,c);
//printf(" %d > %d > %d\n",a,b,c);
getch();
return 0;
}
void exchange(int x,int y,int z)
{
int temp;
if(x < y)
{
temp = x;
x = y;
y =temp;
}
if(x < z)
{
temp = x;
x = z;
z = temp;
}
if(y < z)
{
temp = y;
y = z;
z = temp;
}
printf(" %d > %d > %d\n",x,y,z);
}
这个没用指针,不也修改了a,b,c的值了吗?这个又是什么说法?( 哈哈,见笑啦!!!) wangdarling 发表于 2018-8-10 21:45
#include "stdio.h"
#include "conio.h"
实际上没有修改abc的值,你可以试试不要注释主函数里面的printf。
这个x,y,z是一个拷贝(相当于局部变量),函数返回之后就释放了。 无符号整形 发表于 2018-8-10 21:46
实际上没有修改abc的值,你可以试试不要注释主函数里面的printf。
这个x,y,z是一个拷贝(相当于局部变量 ...
嗯嗯,我试了,确实是!唉,我得好好补一下了,大佬,谢谢了!{:10_277:} wangdarling 发表于 2018-8-10 21:50
嗯嗯,我试了,确实是!唉,我得好好补一下了,大佬,谢谢了!
不用谢^~^ 无符号整形 发表于 2018-8-10 21:35
这个x,y,z只是a,b,c的拷贝,要想修改a,b,c的值,请使用指针:
这样才能通过指针修改到a,b,c的值。(因为 ...
为啥上面的这段代码我打进去会显示有错误
页:
[1]