小编Con*_*mer的帖子

函数调用中的堆栈分配

当您调用函数时,如果传递给函数的参数不是数组,或者不是有意使用与符号 ( ) 进行引用传递,则这些参数将按值传递&。例如,

void boo (int a, int b) {}

int main() {
    int var1 {1};
    int var2 {2};

    boo(var1,var2);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,整型变量var1和的值var2被复制到函数参数a和 ,b并存储在为函数分配的堆栈帧中boo()。我的问题是:

如果我写

void boo (int a, int b) {}

int main() {
    boo(1,2);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

是整数文字1并且2不存储在main()堆栈帧中,因为它们现在是右值?

如果我改为写

void boo (int &a, int &b) {}

int main() {
    int var1{1};
    int var2{2};

    boo(var1,var2);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

是参数 …

c++ pass-by-reference pass-by-value

2
推荐指数
1
解决办法
147
查看次数

标签 统计

c++ ×1

pass-by-reference ×1

pass-by-value ×1