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


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

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

此代码的目的是将 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 字节无符号整数)。

希望这是有道理的。

最新更新