gpt4 book ai didi

c++ - 为什么按值调用示例不修改输入参数?

转载 作者:太空狗 更新时间:2023-10-29 23:33:41 28 4
gpt4 key购买 nike

在下面的按值调用示例中,我不明白为什么这段代码没有将 5 的值更改为 6。

第 11 行调用了函数 changeValue,它的值为 6,所以我本以为应该输出 6,结果仍然输出 5?

#include <iostream>
using namespace std;

void changeValue(int value);

int main()
{
int value = 5;
changeValue(value);

cout << "The value is : " << value << "." << endl;

return 0;
}

void changeValue(int value)
{
value = 6;
}

// This doesn't change the value from 5 to 6. 5 is output?

最佳答案

当您按值传递函数参数时,对象的拷贝将传递给函数而不是原始对象。除非您明确指定函数的参数始终是在 C/C++ 中按值传递。

你的功能:

void changeValue(int value)

按值接收参数,简而言之,main() 中的 value 的拷贝被创建并传递给函数,函数对该值进行操作,而不是对main() 中的 value

如果您想修改原始文件,则需要使用通过引用传递

void changeValue(int &value)

现在将对原始 的引用(别名)传递给函数,函数对其进行操作,从而反射(reflect)main() 中的更改。

关于c++ - 为什么按值调用示例不修改输入参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com