小编Nik*_*CSB的帖子

静态分配的数组如何在 C 中的内存中布局?

我正在尝试使用指向另一个 var 的指针来操纵一个 var 的值的指针,这基于本地 vars 通常如何在 C 程序中堆叠。

int i = 30;
int arr[4];

printf("%d\n", *(arr - 5)); // 30
Run Code Online (Sandbox Code Playgroud)
int arr[4];
int i = 30;

printf("%d\n", *(arr - 5)); // also 30
Run Code Online (Sandbox Code Playgroud)

我认为后者应该打印 30 for *(arr + 5),因为这就是我认为本地变量被推入堆栈的方式,但变量似乎以相同的方式在内存中布置。我想了解这里发生了什么。另外,我假设这是依赖于系统/编译器的。

c local-variables memory-layout

1
推荐指数
1
解决办法
68
查看次数

标签 统计

c ×1

local-variables ×1

memory-layout ×1