技術討論區 > C/C++程式設計討論區
救助, 可以協助指導以下函式的功能,
(1/1)
aader:
日前看到一行指令, 看不太懂, 還請各位大大指導
程式行 : ((uint8_t *)&result)[0] = f.read();
(uint8_t *) 是強制轉型嗎? &result 是指result 的位址嗎? ((uint8_t *)&result) 又代表什麼? 為何還有陣列[0]? 實在看不懂
完整函數如下
uint32_t read32(File f) {
uint32_t result;
((uint8_t *)&result)[0] = f.read(); // LSB
((uint8_t *)&result)[1] = f.read();
((uint8_t *)&result)[2] = f.read();
((uint8_t *)&result)[3] = f.read(); // MSB
return result;
}
twu2:
& => 取得變數的記憶體位址
(uint8_t *) => 跟 compiler 說這個記憶體位址是一個陣列, 每個元素是一個 uint8_t
[0] => 第一個元素.
整個做的事就是透過 f.read() 讀進四個 uint8_t 大小的資料, 塞到 uint32_t 的變數裡頭.
導覽
[0] 文章列表
前往完整版本