[技术问答] 问一个指针强制转换读取数据的操作

[复制链接]
1517|5
 楼主| jiekou001 发表于 2022-1-29 19:18 | 显示全部楼层 |阅读模式
  1. uint32_t ReadMemCore(uint32_t address)
  2. {
  3.     __IO uint32_t val = 0;
  4.     uint32_t *a = (uint32_t*) address;
  5.     val = *a;

  6.     return val;
  7. }
看官方的例子中有这个操作,是把地址那个变量转换成内存地址,然后通过*取地址指向变量吗?
 楼主| jiekou001 发表于 2022-1-29 19:24 | 显示全部楼层
问题来了,是不是和
  1. /* Memory Address */
  2. #define MEM_ADDR(address)       *((volatile unsigned long *) (address))
这个操作等价,都是从地址读取一个数据的操作。
huangcunxiake 发表于 2022-1-29 20:23 | 显示全部楼层
看起来是同一个作用的操作,不过后面这个宏定义的看着很简洁。
huangcunxiake 发表于 2022-1-29 20:24 | 显示全部楼层
你可以用这两个操作同一个地址看看是不是结果一样。
杨德金 发表于 2022-1-31 17:26 | 显示全部楼层
学习 学习
麻花油条 发表于 2022-2-8 16:36 来自手机 | 显示全部楼层
学习学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

147

主题

1539

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部