【发布时间】:2013-06-08 01:33:41
【问题描述】:
我一直在寻找这个问题的答案,但对我来说有点棘手。
原来如此!
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 在堆中?顺便谢谢。
【问题讨论】:
标签: c variables heap-memory stack-memory