8
变量如何存储在程序堆栈中以及如何从程序堆栈中检索?
提前为这个问题的幼稚表示歉意。我是位50岁的艺术家,这是我第一次真正地正确理解计算机。所以去了。 我一直在尝试了解编译器如何处理数据类型和变量(从非常普遍的意义上讲,我知道有很多事情要做)。我对“堆栈”中的存储与值类型之间的关系以及“堆”中的存储与引用类型之间的关系的理解中缺少一些东西(引号旨在表示我理解这些术语是抽象的,而不是抽象的在像我构想此问题的方式这样的简化上下文中太夸张了。无论如何,我的简单想法是布尔值和整数之类的类型都放在“堆栈”上,因为它们可以存储,因为它们在存储空间方面是已知的实体,并且可以轻松地控制它们的范围。 但是我没有得到的是应用程序随后如何读取堆栈上的变量-如果我声明并分配x为整数,例如x = 3,并且存储在堆栈上保留,然后将其值3存储在堆栈中,然后在我声明和分配的功能与相同y,例如4,然后x在另一个表达式中使用(例如z = 5 + x),该程序如何读取x以便评估z何时在下面y在堆栈上?我显然缺少了一些东西。是不是堆栈上的位置仅与变量的生存期/范围有关,并且整个堆栈实际上始终可以被程序访问?如果是这样,是否意味着还有其他索引仅保留堆栈上变量的地址以允许检索值?但是后来我认为堆栈的全部目的是将值与变量地址存储在同一位置?在我微弱的头脑中,似乎还有其他索引,那么我们在谈论的更像是堆吗?我显然很困惑,我只是希望对我的简单问题有一个简单的答案。 感谢您阅读本文。