您的位置:首页 > 其它

关于C指针和数据类型的测试

2009-07-16 17:52 211 查看
今天看到如下一段代码:

getforsecond(&pIec104->T3StartSec);

HimRecvSerial=(*(USHORT *)&RecvBuff[4])>>1;//将RecvBuff[5],RecvBuff[4]右移
pIec104->HasAckSend=HimRecvSerial;
if(pIec104->HasAckSend == pIec104->SendSerial)
{
pIec104->bT1Open=FALSE;
}



比如RecvBuff[5]=0010 0001,RecvBuff[4]=0000 0010

如上函数操作后结果为 HimRecvSerial 0001 0000 1000 0001

感到很迷惑,写程测试后发现确是如此.

RecvBuff为UCHAR型数组,HimRecvSerial 为USHORT类型数据,

&RecvBuff[4],是取一个UCHAR变量的地址,

(USHORT *)&RecvBuff[4]是将UCHAR指针强制转换为USHORT 类型的指针.

之前我都是比较明白的 我不明白为什么然后再加*取其内容后就能将RecvBuff[5]的内容取过来

我测试的时候发现RecvBuff[5]的地址为RecvBuff[4]的地址加一.

哪位高手能帮我解释下.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: