我有一个类似下面的功能swap()
void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
当我这样调用它的主要功能时
void main(int argc, char const *argv[])
{
int x,y;
printf("enter two integer: ");
scanf("%d %d",&x,&y);
printf("\nbefore swapping: %d , %d\n",x,y);
swap(x,y);
printf("\nafter swapping: %d, %d\n",x,y);
}
函数swap()不起作用(表示不交换两个值)。 为什么会这样? 谁能帮我解决这个问题?
答案 0 :(得分:0)
您的void swap(int x, int y)
复制该参数,它不使用“引用”,这与Java之类的语言相反(甚至不确定Java整数中的值是否按值传递)。
使用:
void swap(int* x, int* y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}