在flash模拟E2PROM实验中这个*(vu16*)faddr; 函数的理解

2019-07-20 23:26发布

*(vu16*)faddr; 总觉得将一个32位的地址强制转换为16位的指针,在取16位指针地址,不太理解怎么取出来的就是一个16位的数据了,然后将32位地址+2,就可以取下一个16位数据了,求大神解难
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
warship
1楼-- · 2019-07-21 03:53
 精彩回答 2  元偷偷看……
李韬sust
2楼-- · 2019-07-21 05:40
 精彩回答 2  元偷偷看……
warship
3楼-- · 2019-07-21 09:05
李韬sust 发表于 2019-6-22 17:04
您好谢谢您的回答,可是我还是不太懂32位的地址值强制转换为16位的地址(是不是意味着丢掉高16位的地址值 ...

你是真的没有搞清楚地址的含义,
不是把32位的地址值强制转换为16位的地址
是把32位的数值强制转换为32位的地址(这个地址指向16位的变量)
一点损失都没有!!!
warship
4楼-- · 2019-07-21 10:56
MCU的地址都是32位的,
地址(或说是指针)可以指向各种类型,
可以是8位变量、16位变量、32位变量、结构变量、函数入口、另一指针等等,
非常非常广泛和灵活,指针是C语言的精华,一定要搞懂。
一个指针被确定类型后,从这个指针取出的就是它指向类型的长度,
如果一个指针(对于MCU一定是32位长度的)指向的是16位变量(如vu16),
则从这个指针取出的就一定是一个16位值。
李韬sust
5楼-- · 2019-07-21 13:33
warship 发表于 2019-6-22 21:21
MCU的地址都是32位的,
地址(或说是指针)可以指向各种类型,
可以是8位变量、16位变量、32位变量、结构 ...

好的我知道了谢谢

一周热门 更多>