C数组地址

标签 c arrays pointers embedded

我想制作 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/

相关文章:

arrays - Matlab Accumarray 用于 3D 矩阵

c - 使用**(双指针)时如何使用free?

c++ - int **const p 的行为与常量不同

c - 如何忽略自己广播的udp包

c - 为什么使用 printf ("mystring\n") 而不是仅仅 put ("mystring")?

java - 在 Android 上从 USB 文本中分割 str 和连续制表符后留下的空字段难以识别

c - 全局空间中的指针初始化 C 语句如何在编译/链接时获取其分配的值?

python - 将数据从 Python 程序发送到 C++ 程序的策略

c - 分配作为参数传入的函数指针

python - 四处走走,python 中的 numpy 对象不匹配错误