- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
16小时前关门了。
Improve this question
我很好奇为什么操作2可以成功地交换a
和b
,而操作1却不能。
//operation1:
void exchange(char *a, char *b)
{swap(a,b);}
//operation2:
swap(a,b);
(我将整个代码压缩到上面的几行代码中)
我意识到操作1有点荒谬,但我仍然想知道为什么它不能工作。
1条答案
按热度按时间umuewwlo1#
你正在交换局部变量
a
和b
,它们是按值传入的,因此它们是调用者变量的 * 副本 *,调用者的原始变量不受影响。要更新调用者的变量,需要将它们通过引用传入**:
或者,通过指针将它们传入: