打印
[ZLG-ARM]

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

[复制链接]
1044|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fantesy|  楼主 | 2007-12-28 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2007-12-28 20:50 | 只看该作者

参考:

转帖:


C语言中指针和数组名小趣 
电脑圈圈 发表于 2007-8-22 11:34:00 


在C语言中,指针和数组名通常都可以混用。
例如
char *p;
访问时,*p跟p[0]是一样的,*(p+1)跟p[1]是一样的。
对于数组
char b[5];
访问时,b[0]跟*b是一样的,b[2]跟*(b+2)是一样的。

在一般的通信中(例如串口),通常都使用字节传输。而像float,long int之类的,
有4字节。我的方法就是取它的地址,强制转换为char型指针,然后当作数组来用。
float x;
SBUF=((char*)&x)[0];
SBUF=((char*)&x)[1];
SBUF=((char*)&x)[2];
SBUF=((char*)&x)[3];
接收时,刚好倒过来。

更有趣的是,对于数组形式,数组名和后面的偏移量可以随便换。
char buff[10];
//或者用 char *buff=&buffer;

buff[3]=0xaa;
3[buff]=0xaa;  //居然是一样的,倒塌...

因此,我认为编译器是这么干的:对于形如xxx[yyy]这样的表达式,会转化为*(xxx+yyy),
因此写成xxx[yyy]或者写成yyy[xxx]都无所谓了...非典用法,请勿乱用,出了事偶不负责...

 

(By  computer00 @ http://computer00.21ic.org@2007-08-22)
 



相关链接:http://computer00.21ic.org/user1/2198/archives/2007/41252.html

使用特权

评论回复
板凳
fantesy|  楼主 | 2007-12-28 21:10 | 只看该作者

谢谢OO了

还有个问题,你的博客上我没找到那篇从51到uc0S-II,请问在哪,谢谢了

使用特权

评论回复
地板
computer00| | 2007-12-28 21:44 | 只看该作者

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

使用特权

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

本版积分规则

44

主题

113

帖子

0

粉丝