用不同的函数更改局部变量

Changing a Local Variable With a Different Function

本文关键字:局部变量 函数      更新时间:2024-09-22

如果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 )

这样,就不会复制原始变量,并且您的程序应该按预期工作,而不需要任何进一步的修改。

使用数组的原因是,如果传递数组,它将衰减为指针,相当于引用。