【发布时间】:2019-11-16 22:48:32
【问题描述】:
我正在尝试实现一个交换回函数,它将值交换回原始位置。这是我必须做的指令:
实施第二次交换 函数 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不接受指针,它正在交换自己的参数,但在其调用者中不 任何东西。既然你知道这行得通,为什么不再次拨打swap(&x, &y)换回来? -
另外,如果你真的想要一个单独的
swapBack函数,它也需要接受指针。 -
我很惊讶你的编译器没有警告你调用
swapBack(&x, &y)。正如所写,swapBack接受整数,而不是指向整数的指针。 -
swapBack()将按照我猜你希望它的行为(如果你真的解释你期望它做什么会有所帮助),只有当你完全按照swap()来实现它时,即只是名称不同。或者,如果您以相同的方式声明原型,然后在内部调用swap(pX, pY)。 -
抱歉没有详细说明,我必须根据这个实现一个'swaBack'函数:实现第二个交换函数swapBack(int v[2]),它采用向量v = [ x, y] 作为输入并交换其条目。在上面的程序中包含新函数以交换 x 和 y 的值。