我正在尝试实现交换功能,该功能会将值交换回原始位置。这是我必须做的说明:

实施第二次交换
函数swapBack(int v [2]),将向量v = [x,y]作为输入并交换其条目。包括
将新功能添加到上面的程序中,以换回x和y的值。

#include <stdio.h>

void swap(int *pX, int * pY){
    int temp = *pX;
    *pX = *pY;
    *pY = temp;

}

void swapBack(int x, int y){
    swap(&x,&y);
}

int main() {
int x = 10;
int y = 5;
swap(&x, &y);
printf("x = %d, y = %d\n", x, y);
swapBack(&x, &y);
printf("x = %d, y = %d\n", x, y);
return x + y;
}


但是,两个printf都产生相同的结果,我不确定如何解决?谢谢

最佳答案

您将swapBack定义为错误。应该采用两个整数的数组(衰减为指针)。

这应该与您想要的内容有关:

void swapBack(int v[2])
{
    int temp = v[0];
    v[0] = v[1];
    v[1] = temp;
}


一个测试这个的程序:

#include <stdio.h>

void swapBack(int v[2])
{
    int temp = v[0];
    v[0] = v[1];
    v[1] = temp;
}

int main(void)
{
    int v[2] = {10, 5};

    printf("v[0] = %d, v[1] = %d\n", v[0], v[1]);
    swapBack(v);
    printf("v[0] = %d, v[1] = %d\n", v[0], v[1]);
    printf("v[0] + v[1] = %d\n", v[0] + v[1]);

    return 0;
}

关于c - 如何修复swapBack函数以获得预期的结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58895940/

10-10 13:18