close

巴倫西亞語翻譯

  • 式子(3) 實際是界說一個體名 IamFunc, 它是一個傳回值為整數且需要二個整數參數的函數.
  • 式子(4) 和式子(3) 對照, 只是回傳值由 int 變為 int*. 因為在 IamFunc 右側的函數呼喚運算子 ()翻譯社 比在左側的取值運算子 *翻譯社 優先官僚來得較高.
  • 式子(5) 和式子(3) 對照, 多加了括號強制取值運算子 * 先履行, 所以函數釀成了指向函數的指標, (名為 IamFunc 的資料型態, 是一個指標指向一個傳回值為整數且需要二個整數參數的函數).
  • 有人說 式子(3) 和式子(5) 是對等的, 關於這點我不是很清晰, 需要多一點時候找資料及作些實行來驗證.
    • 謎底也對也錯: 就 typedef 的界說內容來講: 他們是不一樣的. 然則就後續程式的現實運用來講: 這二個 typedef 界說完全一致, 程式的寫法溝通翻譯社 結果也完全一樣. 之所以會有這類情形, 是因為 C 編譯器對 function pointer 的界說和處置懲罰體式格局和其他指標其實不一樣, 並且還有點另類: function pointer 的取址運算 & 及取值運算 * 後果或有分歧 (一個是指標的位址, 一個是函數的位址) 但是只要一帶上 () 效果都是呼喚函數並且不會搞錯 (好奇異喔!). 這裡有一篇有關 function pointer 的申明 (英文) Declaring翻譯社 Assigning, and Using Function Pointers 是 Usenet 上 comp.lang.c FAQ list 的保護人 Steve Summit 師長教師寫的, 對於 function pointer 的取址運算 & 及取值運算 * 有明白的解說, 供應給各人參考.

typedef uint8_t   Buffer[16];

Buffer xBuf;

xBuf[0] = 3;
xBuf[1] = 2;
  • 第3行有些小小的奇異, 定義變數時似乎沒有指定是陣列, 後面卻可以用陣列的寫法. 其實第3行相當於 uint8_t xBuf[16]
  • 用法可能看起來有點奇異, 卻可以包管每次用 Buffer 界說或宣佈的陣列變數 必然是 16 個 uint8_t 元素. 益處是陣列的巨細需要改變時翻譯社 只要修改 typedef 不必全部專案翻找一遍, 還要擔憂是否是有改漏了.

如果碰到看不懂時, 建議你可以把界說中的 typedef 拿掉, 同時資料型態名稱換成變數的名稱翻譯社 就會比力輕易理解. 例如: 把 typedef uint8_t Buffer[16]; 去掉 typedef翻譯社 Buffer 換成變數名 xBuf, 釀成 uint8_t xBuf[16];

下面的例子含有例舉 (enum) 別號定義, 應該不消多作诠釋.