**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
两年前关闭了。
Improve this question
我最近开始学习C++,并开始观看一个有趣的视频系列,由一个游戏开发者称为Cherno。在了解了指针如何工作后,我决定尝试学习如何引用工作,在视频中,他给出了一个代码片段的例子,我有点困惑。在我的脑海中,输入到increment函数中的参数返回其递增值在逻辑上是有意义的,但实际上并没有。我是个新手。这是我提到的代码片段。
#include <iostream>
#define log(x) std::cout << x << std::endl
void increment(int value) {
value++;
}
int main() {
int a = 5;
increment(a);
log(a);
}
编辑:在对代码进行了一些测试之后,我意识到当我在void increment函数而不是main函数中记录输出时,它返回的是增量值,这也让我和最初的问题一样困惑。
1条答案
按热度按时间3pvhb19x1#
在这段代码片段中,您声明了一个函数,并通过值传递了一个参数:
它真正做的是在函数内部增加这个值,就这样,它不返回这个值,也不更新任何其他变量。
有几种方法可以解决这个问题。
1.你可以用一种经典的方式从函数中返回值:
在上例中,
a
的新值将递增。1.你可以用指针来更新一个声明在函数作用域之外的变量。2你可以把指针看作变量的地址。
在上面的示例中,您使用变量
a
的地址(指针)更新了该变量的值。1.你可以使用引用。2它们只是一个变量的代理,通常表现为指针。3不同之处在于允许一个适合代理的语法:
在这种情况下,代理只是引用函数作用域之外的变量的一种方式,++将更新变量
a
的值