gpt4 book ai didi

c - 堆和栈上的变量

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:02 24 4
gpt4 key购买 nike

我一直在寻找这个问题的答案,但对我来说有点棘手。

就这样吧!

    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 会在堆中吗?顺便说一句,谢谢。

最佳答案

b 将在堆栈上。

调用square时,a&b是相同的值。根据调用约定和编译器优化,此值可能在寄存器中或堆栈中,或两者中。

关于c - 堆和栈上的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com