共用方式為


型別限定詞

型別限定詞讓兩個屬性的其中一個識別項。 Const 型別限定詞宣告為不可修改的物件。 volatile型別限定詞宣告來指定由程式控制範圍內的程式,它出現時,例如目前執行的執行緒可以合法變更值的項目。

這兩個輸入限定詞, const 和volatile,可以在宣告中出現一次。 型別識別項都可以顯示的任何型別規範; 不過,也不可出現在多個項目宣告中的第一個逗號之後。 例如,下列宣告是合法的:

typedef volatile int VI;
const int ci;

這些宣告不是合法的:

typedef int *i, volatile *vi;
float f, const cf;   

型別限定詞就存取為左值運算式中的識別項時,才是相關。 請參閱值 (L-VALUE) 和 R-Value 運算式為左值和運算式的相關資訊。

語法

  • 型別限定詞
    constvolatile

下列是合法的 const 和volatile宣告:

int const *p_ci;       /* Pointer to constant int */
int const (*p_ci);     /* Pointer to constant int */
int *const cp_i;       /* Constant pointer to int */
int (*const cp_i);     /* Constant pointer to int */
int volatile vint;     /* Volatile integer        */

如果陣列型別的規格中包含的型別限定詞,限定的項目,不陣列型別。 如果函式型別的規格包含辨識符號,則這個行為未定義。 既不volatile或 const 影響值的範圍或算術物件的屬性。

這份清單將告訴您如何使用 const 和volatile。

  • Const 關鍵字可以用來修改任何基本或彙總的型別或任何型別,物件的指標或typedef。 如果項目以宣告只能 const 型別限定詞,其型別會被取為 const int。 A const 變數可以進行初始化,或可以放在唯讀的儲存區域。 Const 關鍵字適用於宣告指向 const 因為這需要函式不變更任何形式的指標。

  • 編譯器會假設,在程式中,隨時volatile變數可以由未知的處理序的使用,或是修改它的值。 因此,不論在命令中指定的最佳化行中,每個工作分派到的程式碼,或參考的volatile必須產生變數,即使它似乎沒有任何作用。

    如果volatile單獨使用, int假設。 volatile型別規範可以用來提供可靠的存取權的特殊的記憶體位置。 使用volatile與資料物件,可能會存取或改變的訊號處理常式,藉由同時執行的程式,或由特殊的硬體,例如記憶體對應 I/O 控制登錄。 您可以將變數宣告為volatile的存留期內,或者也可以轉換單一的參照位址應包括volatile。

  • 項目可以是兩者都 const 和volatile,在此情況下的項目無法合法修改自己的程式,但無法修改某些非同步處理。

請參閱

概念

宣告和型別