请教语法问题?
struct MESURE //遥测
{
BYTE mesurel: 8; //遥测值低字节
BYTE mesureh: 3; //遥测值高字节
BYTE mesurec: 1; //符号位
BYTE impotence:2; //无效位
BYTE overflow:1; //溢出
BYTE invalid: 1; //无效
};
MESURE *mesure1;
请问这句话是什么意思:
mesure1=(MESURE*)(&buf[inform+2]);
问题点数:20、回复次数:4Top
1 楼free_free(free_free)回复于 2002-05-22 09:11:11 得分 0
inform应该是个变量吧
(&buf[inform+2])应该是个地址
Top
2 楼step_by_step(脚印)回复于 2002-05-22 09:13:53 得分 0
因为buf不是MESURE* 类型的数组,所以要先强制类型转换后,再赋给mesurelTop
3 楼jimconrad(jimmy)回复于 2002-05-22 09:17:33 得分 15
buf大概是BYTE数组。这行代码是将buf的第inform+2个元素起到第inform+2+sizeof( struct MESURE )-1 个元素止的sizeof(struct MESURE)个元素看成一个MESURE结构,把该结构的指针(即第inform+2个元素的地址强制转换后)赋给变量mesure1这个指针。Top
4 楼step_by_step(脚印)回复于 2002-05-22 09:18:26 得分 0
因为buf是个数组首地址,不是MESURE*这个类型,所以在赋值前,先要进行强制类型转换。将其转换成MESURE*类型。我想buf很可能是char*型吧Top
5 楼ookook(黑暗之光)回复于 2002-05-22 09:30:03 得分 5
BUF数组分配了空间,&BUF取地址.
buf的第inform+2个元素起到第inform+2+sizeof( struct MESURE )-1 个元素
的地址空间强制转换为MESURE *型
Top



