关于c语言指针的疑惑

[复制链接]
2168|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

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