[ZLG-ARM] 啊?我好象没发表过这样一篇**...

[复制链接]
1572|3
 楼主| fantesy 发表于 2007-12-28 20:37 | 显示全部楼层 |阅读模式
volatile&nbsp;uint16&nbsp;&nbsp;*ip;<br /><br />ip&nbsp;=&nbsp;0x81000000;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;转换地址0x5555<br />&nbsp;ip[0]&nbsp;=&nbsp;0xaaaa;<br /><br />请问这里ip[0]是什么用法,谢谢!&nbsp;&nbsp;&nbsp;&nbsp;
computer00 发表于 2007-12-28 20:50 | 显示全部楼层

参考:

转帖:<br /><br /><br />C语言中指针和数组名小趣&nbsp;<br />电脑圈圈&nbsp;发表于&nbsp;2007-8-22&nbsp;11:34:00&nbsp;<br /><br /><br />在C语言中,指针和数组名通常都可以混用。<br />例如<br />char&nbsp;*p;<br />访问时,*p跟p[0]是一样的,*(p+1)跟p[1]是一样的。<br />对于数组<br />char&nbsp;b[5];<br />访问时,b[0]跟*b是一样的,b[2]跟*(b+2)是一样的。<br /><br />在一般的通信中(例如串口),通常都使用字节传输。而像float,long&nbsp;int之类的,<br />有4字节。我的方法就是取它的地址,强制转换为char型指针,然后当作数组来用。<br />float&nbsp;x;<br />SBUF=((char*)&x)[0];<br />SBUF=((char*)&x)[1];<br />SBUF=((char*)&x)[2];<br />SBUF=((char*)&x)[3];<br />接收时,刚好倒过来。<br /><br />更有趣的是,对于数组形式,数组名和后面的偏移量可以随便换。<br />char&nbsp;buff[10];<br />//或者用&nbsp;char&nbsp;*buff=&buffer;<br /><br />buff[3]=0xaa;<br />3[buff]=0xaa;&nbsp;&nbsp;//居然是一样的,倒塌...<br /><br />因此,我认为编译器是这么干的:对于形如xxx[yyy]这样的表达式,会转化为*(xxx+yyy),<br />因此写成xxx[yyy]或者写成yyy[xxx]都无所谓了...非典用法,请勿乱用,出了事偶不负责...<br /><br />&nbsp;<br /><br />(By&nbsp;&nbsp;computer00&nbsp;@&nbsp;http://computer00.21ic.org@2007-08-22)<br />&nbsp;<br /><br /><br /> <br /> 相关链接:<a href='http://computer00.21ic.org/user1/2198/archives/2007/41252.html'>http://computer00.21ic.org/user1/2198/archives/2007/41252.html</a>
 楼主| fantesy 发表于 2007-12-28 21:10 | 显示全部楼层

谢谢OO了

还有个问题,你的博客上我没找到那篇从51到uc0S-II,请问在哪,谢谢了
computer00 发表于 2007-12-28 21:44 | 显示全部楼层

啊?我好象没发表过这样一篇**...

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

113

帖子

0

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