找回密码
 立即注册
内存为什么常量40048004 | 软件设计/软件工程 2022-05-04 228 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
问题
为了理解使用嵌入式系统时的指针,我试图理解访问内存映射寄存器的代码中发生了什么:

uint32_t regval = *(uint32_t *)0x40048004U;

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

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

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

uint32_t register_value = *0x40048004U;

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

有几个答案:

ü

大号

*0x40048004U

*(valueType*)0xDEADBEFF





上一篇:TypeError:分段使用 sympy 时无法确定关系的真值
下一篇:使用 pip 安装 pandas 时出错