打印

关于c语言指针的疑惑

[复制链接]
1531|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pkat|  楼主 | 2011-10-25 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例子如下:
U8 unsigned char
U16 unsigned int

static U16 data u16MsgArray[MSG_ARRAY_SIZE];

((U8 *)(&(u16MsgArray[ u8MsgHead])))[0] = MsgType;

问题如下,最后一个语句如何理解,我感觉我的脑子绕不过来了,呵呵

相关帖子

沙发
sjl2006| | 2011-10-25 16:20 | 只看该作者
u16MsgArray[ u8MsgHead] -- 从数组中索引一个16位元素
&(u16MsgArray[ u8MsgHead]) -- 取出该元素的地址(指向U16的指针)
(U8 *)(&(u16MsgArray[ u8MsgHead])) -- 把该地址转为指向U8的指针
((U8 *)(&(u16MsgArray[ u8MsgHead])))[0] = MsgType-- 把MsgType赋给它指向的元素(一个U8),就是给u16MsgArray这个数组中对应索引为u8MsgHead的U16的第一个U8赋值。
可以简写为:*(U8 *)(u16MsgArray + u8MsgHead) = MsgType;

使用特权

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

本版积分规则

196

主题

2726

帖子

0

粉丝