在许多人都知道的C中,堆栈是所有局部变量所在的位置.堆栈是最后输出数据结构的第一个意味着您只能访问最近推送到其上的内容.所以给出以下代码:
int k = 5;
int j = 3;
short int i;
if (k > j) i = 1;
Run Code Online (Sandbox Code Playgroud)
显然这是无用的代码,没有任何实际意义,但我试图绕过一些东西.
对于short int i声明,我假设在堆栈上分配了2个字节.对于4个字节的int k和int j,使用值5和3分配.因此堆栈将如下所示
---------- <- stack pointer
int i
----------
int k = 5
----------
int j = 3
----------
Run Code Online (Sandbox Code Playgroud)
所以对于if语句,你必须弹出int i来获得条件k和j,如果是这样,int我去哪里?如果这是C执行局部变量的方式,这一切似乎都非常耗时且乏味.
那么这实际上C是怎么做的,还是我把它全部搞砸了?