【发布时间】:2013-04-24 04:18:38
【问题描述】:
我希望在 C 程序中实现一个堆栈,我正在考虑使用 unsigned char * 作为基础。这将是堆栈的底部,所有其他寄存器和信息将是该地址的位移。但是,我似乎无法理解如何正确执行此操作。我正在考虑做这样的事情......
//Info: Store 20 at address x0000007c
unsigned char * base = 0;
int address = x0000007c;
(base + address) = 20;
C 编译器不喜欢这样,所以我想知道如何在不丢失指针的情况下解决这个问题或做类似的事情。
【问题讨论】:
-
不确定我是否明白这个问题。您不能只将指针设置为您喜欢的某个值,然后离开。指针必须指向有效的东西。
-
奇怪。您使用指针变量存储整数值,使用整数存储“地址”(实际上不是地址)。为什么?你在看哪本书?
-
@undefinedbehaviour 这是一个来自学校 C 教科书的 Y86 模拟器程序。此作业旨在教授获取和执行周期。
-
@MikeMelchione 这似乎是一本很差的教科书。
-
@undefinedbehaviour 它被称为计算机系统,程序员的视角。在我看来相当不错的书。
标签: c pointers memory-address