c - 从已知地址访问数组

标签 c arrays

我有一个代码,我通过了内存中的某个地方。内存中的这个地方指向一个数组

uint32_t *ps2 = NULL;
uint32_t src_address = 0x1ffffc3;

如何从此地址读取数组的值? 我试着按如下方式转换它

*ps2 = (void *)src_address;

但它给了我一个错误:从‘void*’到‘uint32_t’的无效转换

问候,

最佳答案

你有两个问题:

  1. 首先,指针ps2 是一个空指针,它不指向任何地方。这意味着您不能取消引用它。

  2. src_address 不是指针,但它确实应该是。

总而言之,您对指针及其使用方式的理解似乎有些困惑。

要让它工作,首先将 ps2 定义为不是指针:

uint32_t ps2;

然后定义src_address 作为一个指针:

uint32_t *src_address = (uint32_t *) 0x1ffffc3;

最后像普通指针一样取消引用 src_address:

ps2 = *src_address;

可能存在第三个问题:src_address 的地址未针对 uint32_t 对齐。在某些系统上,未对齐的访问是无效的,并且会导致硬件异常。

关于c - 从已知地址访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55511293/

相关文章:

c - GCC 关于用数组分配指针变量的警告?

php - 计算多维数组 PHP 中的值

c - 为什么索引字符指针是一个 int 有意义?

c++ - 原子操作需要硬件支持吗?

c++ - 将事件设置为零的文件描述符添加到 epoll 是否有效?

c++ - 带有插入符号操作的字符 XOR

javascript - jquery 将数组插入数组并在发布数据中维护键(多维?)

c++ - 比较两个 vector 字符串的相似性 C++

c - 访问冲突 : run through array from bmp image

使用二维数组比较值的 c 程序崩溃