为什么函数交换功能不起作用?

时间:2018-11-05 10:40:16

标签: c function

我有一个类似下面的功能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()不起作用(表示不交换两个值)。 为什么会这样? 谁能帮我解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的void swap(int x, int y)复制该参数,它不使用“引用”,这与Java之类的语言相反(甚至不确定Java整数中的值是否按值传递)。

使用:

void swap(int* x, int* y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}