我想制作 64 个 4 字节长的数组,我希望起始地址是我想要的,比如 0x1000_0000
。
int wspace[64]; //this makes a 64 int array
我希望 wspace
位于我选择的特定位置。
我该怎么做?
最佳答案
您开始进入可能未定义行为的灰色区域,但是,如果您知道您在做什么(例如如果您在嵌入式系统上并且您有内存-在该位置映射 I/O 或其他有效的可写内容),那么您可以尝试:
int *wspace = (int *)0x10000000;
根据您的编译器和环境,您可能还想将其标记为易变的,以便实现了解内存可能会独立于所述编译器对其所做的任何操作而发生变化:
volatile int *wspace = (volatile int *)0x10000000;
技术上它不是数组,但是,除非您要对其执行 sizeof
之类的操作,否则这可能并不重要。
完成后,像 wspace[1] = 0x12345678
这样的语句应该将该值写入内存位置 0x10000004-0x10000007
(对于 4 字节整数
)。请记住, 数字的哪一部分进入哪个内存位置将取决于您的体系结构的字节顺序。
关于C数组地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435893/