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

uma*_*121 1 c keil uint32-t

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

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

Oak*_*tes 5

这个码的目标是复制存在于第一个4个字节msg->data[0]LPC_CAN1->TDA1.

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

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

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

希望有道理.