C中*((uint32_t *)& ..)的含义

时间:2016-02-19 09:55:16

标签: c keil uint32-t

LPC_CAN1->TDA1 = *(uint32_t *) &msg->data[0];    // Write first 4 data bytes 

请告诉我为什么使用这个*(uint32_t )以及这个" "的目的是什么?在uint32_t之前和之后

1 个答案:

答案 0 :(得分:5)

此代码的目标是将msg->data[0]处的前4个字节复制到LPC_CAN1->TDA1

&msg->data[0]给出了msg-> data [0]的地址。

(uint32_t *) &msg->data[0]将该地址转换为指向32位无符号整数的地址。

*(uint32_t *) &msg->data[0]从地址读取uint32_t值(4字节无符号整数)。

希望这是有道理的。