/ 输入的数字应交换并显示。对我来说,这个简单的程序看起来不错,但事实并非如此。我曾尝试使用printf(“%d%d”)起作用,但在堆栈上使用默认值。但是它无法使用此代码。我尝试了不同的编译器,例如TurboC ++,CodeBlocks(GCC)。有人可以帮我解释一下吗?预先感谢 /
#include <stdio.h>
#include <stdlib.h>
void swap(int,int );
int main()
{
int x,y;
printf("Two Numbers: ");
scanf("%d\n%d",&x,&y);
swap(x,y);
printf("%d%d",x,y);//printf("%d%d"); makes the program work but not genuinely
return 0;
getch();
}
void swap(int x,int y)
{
int temp;
temp=y;
y=x;
x=temp;
}
答案 0 :(得分:3)
您仅更改仅在方法swap内部存在的x,y的值。 swap方法创建的对象x,y仅具有用于swap方法的新内存映射。它们不存在于方法交换之外。您需要传递值的内存地址引用,以便对原始值的内存地址进行操作。交换需要接受值的内存引用,并将它们存储在指针中,指针将对原始值的内存位置执行操作。
#include <stdio.h>
#include <stdlib.h>
void swap(int*,int* );
int main()
{
int x,y;
printf("Two Numbers: ");
scanf("%d\n%d",&x,&y);
swap(&x,&y);
printf("%d%d",x,y);//printf("%d%d"); makes the program work but not genuinely
return 0;
}
void swap(int *x,int *y)
{
int temp;
temp=*y;
*y=*x;
*x=temp;
}
答案 1 :(得分:-1)
Bro,正确的代码应该是这样的
#include <stdio.h>
#include <stdlib.h>
void swap(x,y);
int main()
{
int x,y;
printf("Two Numbers: ");
scanf("%d\n%d", &x, &y);
swap(x,y);
//If you put print("%d%d", x, y); here it will not print swapped value because the swap(x,y) function only passing the value of x,y...
return 0;
getch();
}
void swap(int x,int y)
{
int temp;
temp=y;
y=x;
x=temp;
printf("%d%d",x,y);
}