技術討論區 > 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] 文章列表

前往完整版本