為什麼「const T」和「T const」都有效?
C 語言允許在星號兩邊指定 const宣告指標時。這種彈性源自於 C 語法的從左到右解析方法。
由左到右解析
C 編譯器由左至右解析輸入標記。解析指標宣告時,它會遇到 標記並假設正在定義指標類型。 之前遇到的任何 const 限定詞都適用於指向的資料類型。但是,如果 const 限定詞出現在 * 之後,則它適用於指標本身。
語意等價
指標聲明的語意意義保持不變,無論如何const 的位置。無論 const 位於類型說明符的左側還是右側,編譯器都會以相同的方式解釋它。
用法
而"const T" 和"T const " 同樣有效,有些程式設計師喜歡將const 放在左側以明確指定資料本身的常量性。然而,選擇一種語法而不是另一種語法是個人喜好的問題。
函數指標
宣告函數指標時也會出現類似的情況。語法「void function1(void)」宣告一個傳回 void 的函數,而「void (* function2)(void)」宣告一個指向傳回 void 的函數的函數指標。
結論
能夠在指標聲明中的星號兩側指定 const 的結果是C編譯器的從左到右的解析機制。從語意上來說,const 的位置並不影響聲明的意思。程式設計師可以自由使用他們喜歡的任何語法以提高可讀性或一致性。
以上是為什麼「const T*」和「T const*」在 C 中都是有效的指標宣告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!