我一直在努力寻找这个问题的答案,但这对我来说有点棘手。
就这样吧!
int square(int* a){
return (*a)*(*a)
}
int main(){
int b = 20;
square(&b);
}
我的问题是:存储变量 a 和 b 在哪里?
在我看来,变量 b 存储在堆栈中,但我对 a 有一些疑问。
当您调用 square(&b) 时,您正在传递引用,在这种情况下是堆栈中变量 b 的地址。
然后,函数 square(int* a) 接收一个 (int* a) 参数,这意味着它将接收一个指针,在这种情况下,该指针是堆栈中变量 b 的引用。所以变量 a 的值就是变量 b 的地址。但两者都将存储在堆栈中。我很确定它在堆栈上,但是......或者 b 在堆栈中而 a 在堆中?顺便谢谢。