问题
为了理解使用嵌入式系统时的指针,我试图理解访问内存映射寄存器的代码中发生了什么:
uint32_t regval = *(uint32_t *)0x40048004U;
在我看来,如果没有类型转换,这意味着 regval 现在等于地址的内存内容。我认为这应该足够了,但这还不够,但是当您对其进行类型转换时,您将其视为指向单个操作的指针,这似乎有点多余。
因此,您将 regval 视为指向 0x40048004U 内存内容的未知地址的内存内容?为什么需要类型转换?
回答
我知道你在问为什么我们不能这样做:
uint32_t register_value = *0x40048004U;
(例如,“为什么我们不能取消引用常量整数?”)。
有几个答案:
ü
大号
*0x40048004U
*(valueType*)0xDEADBEFF
|