为什么按值调用无法更新输入参数
在 C/C 中,函数参数通常是按值传递的,这意味着创建输入变量的副本并将其发送到函数。这意味着函数内所做的任何修改只会影响本地副本,而不影响原始变量。
考虑示例:
#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; }
此代码尝试修改输入参数的值在changeValue函数中。然而,即使函数将本地副本更改为 6,输出仍为 5。
这是因为 changeValue 函数从 main() 接收 value 变量的副本。然后,该函数对该本地副本进行操作,该副本独立于 main() 中的原始变量。因此,函数内所做的更改不会延续到原始变量。
使用引用调用修改输入参数
修改原始变量在函数内部,必须使用引用调用。这允许函数访问和修改内存中的实际变量,而不仅仅是副本:
#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; }
在此示例中,changeValue 函数采用对值变量的引用,由与号 (& )。这允许函数直接访问和修改原始变量。因此,当函数将值设置为 6 时,它会修改 main() 中的实际变量,并且输出正确反映了更改。
以上是为什么无法使用按值调用修改 C/C 函数中的输入参数?的详细内容。更多信息请关注PHP中文网其他相关文章!