用不同的函数更改局部变量
Changing a Local Variable With a Different Function
如果increaseNumber
必须是void
,如何使用函数increaseNumber
更改get_number
中的number
?
#include<iostream>
using namespace std;
void increaseNumber(int64_t number){
number++;
}
int64_t get_number(){
int64_t number = 0;
increaseNumber(number);
return number;
}
int main(void){
cout << get_number();
}
如果有任何帮助的话,我尝试过更改数组而不是整数,效果很好。
问题是您声明函数increaseNumber
的方式使得参数通过值传递:
void increaseNumber( int64_t number )
通过这种方式,它被传递函数get_number
的变量number
的值的副本。因此,修改函数increaseNumber
的变量number
不会改变函数get_number
的变量number
,因为这是两个独立的变量。
如果您希望原始变量的值也被修改,那么您不应该传递变量值的副本,而是应该以传递对原始变量的引用的方式声明函数:
void increaseNumber( int64_t& number )
这样,就不会复制原始变量,并且您的程序应该按预期工作,而不需要任何进一步的修改。
使用数组的原因是,如果传递数组,它将衰减为指针,相当于引用。
相关文章:
- 局部变量保留函数中的值
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 如何在函数外部访问函数中局部变量的值?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- 是否可以影响 C++ 中回调函数的局部变量?
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- 调用一个小函数两次(例如在if条件和主体中)比将结果存储在局部变量中更可取
- C++ - 指向函数中局部变量的指针
- 如何在 C++ 的 lambda 函数中传递同名的局部变量和参数(使用此关键字)?
- Clang++ 6.0 内存清理器未报告返回值指示条件分支的函数中的未初始化局部变量
- 如何将局部变量传递给 lambda 函数
- 局部变量的作用域是块或函数
- 函数原型未初始化的局部变量
- 尝试声明函数的局部变量,但得到范围错误
- 如果对象是通过 new 创建的,则成员函数的局部变量在哪里创建?
- 如果两个线程调用同一个函数,但函数中的所有变量都是局部变量,我还需要担心线程之间共享数据吗?
- 如果函数抛出的异常可能未捕获,如何销毁局部变量?
- 为什么不能在模板函数中向局部变量添加低级 const 类型
- 使用clang_complete自动完成局部变量/函数