提问人:Puya 提问时间:6/9/2023 最后编辑:πάντα ῥεῖPuya 更新时间:6/9/2023 访问量:136
函数输出参数(引用参数)在函数返回之前是否更改?[已结束]
Does a function output parameter (a reference paramter) change before the function returns? [closed]
问:
基本上我想知道在 C++ 中,如果我调用一个函数并通过引用传递参数,那么参数仅在函数返回后才会被修改,或者它们有可能在到达返回点之前在正文中被修改时被更改?
在函数结束时删除它们之前,我需要返回一些对象。显然,当函数返回时,无法访问已删除的对象。
答:
3赞
Ted Lyngmo
6/9/2023
#1
引用可以看作是它所引用的实际对象的别名,因此,每当您通过引用改变对象时,它都会直接影响被引用的对象。
void foo(int& my_int) {
my_int = 10; // <- the change happens exactly here
// `an_int` declared in `main` is now 10
// do other things ...
}
int main() {
int an_int = 0;
foo(an_int);
}
1赞
Top Dev
6/9/2023
#2
当参数通过引用传递给函数时,可以在函数内部修改参数,从而影响传入的原始对象,并且这些修改可以在函数执行过程中的任何时候发生。
0赞
ShakMR
6/9/2023
#3
当您通过引用传递参数时,您发送的是内存地址,因此您对变量值所做的修改是针对内存地址的。
这意味着,如果有另一个进程使用相同的变量,他们将看到更改。如果删除该部分内存,它将影响使用它的任何人。
评论