首頁 > 後端開發 > C++ > C 中的 Const 放置:「const T」與「T const」——我應該使用哪一個?

C 中的 Const 放置:「const T」與「T const」——我應該使用哪一個?

Barbara Streisand
發布: 2024-12-18 11:51:16
原創
939 人瀏覽過

Const Placement in C  : `const T` vs. `T const` – Which Should I Use?

為什麼「const T」和「T const」都有效,你該使用哪一個?

在 C 中,const 關鍵字可用來防止修改物件或指標的。讓一些開發人員感到驚訝的是,語法可能會有所不同:

const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
Object const *obj; // same as const Object* obj;
登入後複製

問題是哪種語法先出現以及為什麼兩者都是正確的。

Const 放置的歷史起源

C 和C 語言語法允許從左到右解析器,這意味著編譯器讀取輸入從左到右,並在遇到標記時對其進行處理。

在解析宣告時,當 標記被消耗時,宣告狀態將變更為指標類型。如果 const 先遇到 ,則限定符會套用至指標宣告;如果在 * 之前遇到它,則限定符適用於所引用的資料。

由於語意意義不會因 const 的位置而改變,因此兩種放置都被接受。

函數指標的意義

函數也會出現類似的情況指標:

  • void * function1(void) 宣告一個回傳一個回傳指標的函數。
  • void (* function2)(void) 宣告一個指向回傳 void的函數的函數指標.

再一次,從左到右的解析器解釋在

首選用法

最終,一種語法相對於另一種語法沒有明顯的偏好。應根據可讀性和開發人員偏好進行選擇。

但是,如果希望與指標和函數指標的語法保持一致,則在引用類型的左側使用 const 可能更合適:

const Object* obj; // no change to obj pointer or value
Object const *obj; // no change to obj pointer or value
登入後複製

以上是C 中的 Const 放置:「const T」與「T const」——我應該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板