函数调用中的堆栈分配

问题描述 投票:0回答:0

当你调用一个函数时,传递给函数的参数如果不是数组或者不是有意使用与符号 (&) 的引用传递,则它们是按值传递的。例如,

void boo (int a, int b) {
}

int main() {

int var1 {1};
int var2 {2};

boo(var1,var2);

return 0;
}

在这种情况下,整数变量 var1var2 的值被复制到函数参数 ab 并存储在为“boo”函数分配的堆栈帧中。我的问题是:

1-如果我写:

void boo (int a, int b) {
}

int main() {

boo(1,2);

return 0;
}

整数文字 12 是否未存储在 main 堆栈帧中,因为它们现在是 r 值?

2-如果我改为写:

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

int main() {

int var1 {1};
int var2 {2};

boo(var1,var2);

return 0;
}

参数ab是否仍然存储在“boo”函数的堆栈帧中作为某种备份等。或者它们只是对实际参数var1var2的引用现在?

我是 C++ 的新手,如果我的问题听起来很愚蠢,我深表歉意。

提前谢谢你=)

c++ pass-by-reference pass-by-value
© www.soinside.com 2019 - 2024. All rights reserved.