我已经阅读了有关堆栈的信息。堆栈当时接受一项操作。程序会弹出或推入堆栈中的项目。

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

如果是,那么使用50个元素的数组怎么可能执行以下操作:

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


值得注意的是,我指的是C语言(并且由于PHP的源代码是C,所以我介绍了一个PHP示例。)

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

先谢谢了。

最佳答案

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

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

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


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


不,不是。它是框架的堆栈,而不是(复合或非复合)变量。仍然可以使用偏移量访问内存。

10-07 19:17
查看更多