我正在查看一段将命令从一种硬件发送到另一种硬件的代码。以下是一个摘要。

unsigned char data[3];

msg_header *mHead; //pointer of struct msg_header
mHead = (msg_header *) &data;

mHead->startByte = START_BYTE;
mHead->ID = GET_TELEM; //0x30
mHead->length = 0;

msg_header结构在头文件中定义。
typedef struct {
unsigned char startByte;
unsigned char ID;
unsigned char length;
//  unsigned char from;
} msg_header;

有人可以解释mHead = (msg_header *) &data;实际在做什么吗?
我知道*&正在创建指向指向数据的指针的引用,但是为什么msg_header包含在括号中,为什么包含它?

谢谢你的帮助。

最佳答案

它将data的地址转换为msg_header*类型-指向msg_header的指针。

没有可谈的引用。 &可用于获取变量的地址。

09-06 06:23