gpt4 book ai didi

c++ - 函数调用时局部变量如何在栈中组织?

转载 作者:搜寻专家 更新时间:2023-10-31 00:36:46 27 4
gpt4 key购买 nike

我运行以下代码:

    void func()
{
int i;
int array[10];

cout << &i << endl;

for(int i = 0; i < 10; ++i)
{
cout << &array[i] << '\n';
}
}

输出是:

    0x28fe98
0x28fe70
0x28fe74
0x28fe78
0x28fe7c
0x28fe80
0x28fe84
0x28fe88
0x28fe8c
0x28fe90
0x28fe94

为什么i的地址是0x28fe98
我认为 i 的地址必须是 &array[0] - 4
为什么i的地址实际上是&array[9] + 4

最佳答案

why the address of i is 0x28fe98?

它位于数组末尾之后

i think the address of i must be &array[0] - 4.

为什么会这样?

why the address of i is &array[9] + 4 in fact?

因为 i 在你的数组之后 :)

通常,元素被压入堆栈,当堆限制增加时,它们的地址会减少,但除非您处于低级别(asm 等),否则任何代码都不应依赖于此

关于c++ - 函数调用时局部变量如何在栈中组织?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20973857/

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