覆盖数组元素以及堆栈的结构和机制

时间:2014-06-25 06:19:59

标签: c arrays stack

我读过有关堆栈的内容。堆栈当时接受一个操作。程序会弹出或推送一个项目进入或进入堆栈。

现在,数组也是底层堆栈的接口。这是真的吗?

如果是,那么如何使用50个元素的数组,我们可以做到以下几点:

$x[30] = "A new value to be written on the older value of this index.";

值得注意的是我的意思是C语言(因为PHP的源代码是C语言,我通过PHP示例。)

我的意思是如何处理堆栈上的操作?因为当时只能编辑堆栈的最后一个元素,那么如何处理这样的语句(上面的例子)呢?

先谢谢。

2 个答案:

答案 0 :(得分:1)

Now, arrays are also an interface to an underlying stack. Is that true?

没有。您可以使用数组来实现堆栈,但您通常不会使用堆栈来实现数组。

答案 1 :(得分:0)

在内存中,当您调用新函数时,将启动新的堆栈帧。当你超出范围}时,会从内存中弹出一个框架,因此它被称为堆栈。

关于内存访问,您可以访问要写入的内存的任何可写偏移量。

因此,使用a[10]访问数组就像访问stack_pointer + offsetOf_A + 10 * sizeOf_A[0]

一样
  

现在,数组也是底层堆栈的接口。就是它   真?

不,这不是。它是一堆帧而不是(复合或非复合)变量。仍然可以使用偏移来访问内存。