C++:如果在另一个函数中调用swap,为什么它不能工作[已关闭]

t1qtbnec  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(106)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
16小时前关门了。
Improve this question
我很好奇为什么操作2可以成功地交换ab,而操作1却不能。

//operation1:
void exchange(char *a, char *b)
{swap(a,b);}

//operation2:
swap(a,b);

(我将整个代码压缩到上面的几行代码中)
我意识到操作1有点荒谬,但我仍然想知道为什么它不能工作。

umuewwlo

umuewwlo1#

你正在交换局部变量ab,它们是按值传入的,因此它们是调用者变量的 * 副本 *,调用者的原始变量不受影响。
要更新调用者的变量,需要将它们通过引用
传入**:

void exchange(char* &a, char* &b) {
    swap(a, b);
}

...

exchange(a, b);

或者,通过指针将它们传入

void exchange(char **a, char **b) {
    swap(*a, *b);
}

...

exchange(&a, &b);

相关问题