首页 > 后端开发 > C++ > 为什么无法使用按值调用修改 C/C 函数中的输入参数?

为什么无法使用按值调用修改 C/C 函数中的输入参数?

Mary-Kate Olsen
发布: 2024-11-13 15:49:02
原创
889 人浏览过

Why Can't I Modify Input Parameters in C/C   Functions Using Call-by-Value?

为什么按值调用无法更新输入参数

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板