52ky 发表于 2022-5-4 15:14:41

为什么我们不能取消引用常量整数?

问题
为了理解使用嵌入式系统时的指针,我试图理解访问内存映射寄存器的代码中发生了什么:

uint32_t regval = *(uint32_t *)0x40048004U;

在我看来,如果没有类型转换,这意味着 regval 现在等于地址的内存内容。我认为这应该足够了,但这还不够,但是当您对其进行类型转换时,您将其视为指向单个操作的指针,这似乎有点多余。

因此,您将 regval 视为指向 0x40048004U 内存内容的未知地址的内存内容?为什么需要类型转换?

回答
我知道你在问为什么我们不能这样做:

uint32_t register_value = *0x40048004U;

(例如,“为什么我们不能取消引用常量整数?”)。

有几个答案:

ü

大号

*0x40048004U

*(valueType*)0xDEADBEFF



页: [1]
查看完整版本: 为什么我们不能取消引用常量整数?