打印
[MCU]

关于地址和地址的值,搞不懂,求指教

[复制链接]
845|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanandren|  楼主 | 2016-6-1 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ui, tc
uint32_t b;
uint32_t c;
b = 0x400ff040;
c = b + 0x14;
*((uint32_t *)c)|= (1U << 18);

这里有这样一段代码,我想请问一下,执行完以后,哪个地址被写入了?
这边的
c=b+0x14,是不是作为某一个要写入的初始地址,
然后根据*((uint32_t *)c)|= (1U << 18);进行偏移然后写入






是不是
*((uint32_t *)c)| = 1 , 是不是 0x400ff054 = 1;
*((uint32_t *)c)| = 1<<1 , 是不是 0x400ff054 = 2  =>  0x400ff055 = 1

相关帖子

沙发
meancom| | 2016-6-1 23:09 | 只看该作者
首先 uint32_t * 表示指针指向的数据类型为uint32_t
其次(uint32_t *)c 表示强制转换c为指针,且指针指向的数据类型为uint32_t
然后*((uint32_t *)c)表示数据,数据类型为uint32_t,地址为c
接着*((uint32_t *)c)|=1 等同于 *((uint32_t *)c) = *((uint32_t *)c) | 1
最后就是 读取 地址 0x400ff040 + 0x14 的值后进行“|”操作后写回原地址

使用特权

评论回复
板凳
yanandren|  楼主 | 2016-6-6 09:18 | 只看该作者
meancom 发表于 2016-6-1 23:09
首先 uint32_t * 表示指针指向的数据类型为uint32_t
其次(uint32_t *)c 表示强制转换c为指针,且指针指向的 ...

谢谢

使用特权

评论回复
地板
ningling_21| | 2016-6-6 14:53 | 只看该作者
不单是赋值,是一个 读,修改,写  的过程

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

17

帖子

0

粉丝