const int 和int const 的區別

2022-03-27 11:21:53 字數 1231 閱讀 2646

先看一段**:

1: char greeting = 「hello」;
2: char* p = greeting; //non-const pointer,non-const data
3: const

char* p = greeting; //non-const pointer,const data;

4: char* const p = greeting;//const pointer,non-const data;
5: const

char* const p = greeting; //const pointer,const data;

6:
const語法雖然變化多端,但並不莫測高深。如果關鍵字const出現在*左邊,表示被指物是常量;如果出現在*右邊,表示指標自身是唱兩句;如果出現在*兩邊,表示被指物和指標兩者都是常量。

如果被指物是常量,有些程式設計師會將關鍵字const寫在型別之前,有些人會把它寫在型別之後、*之前。兩種寫法的意義相同,所以下列兩個定義相同:

1: const widget* w;
2: widget const* w;
其實很簡單,const和*的優先順序相同

且是從右相左讀的,即「右左法則」

其實const只是限定某個位址儲存的內容不可修改

比如int*p;讀作p為指標,指向int,所以p為指向int的指標

int*const p;讀作p為常量,是指標,指向int,所以p為指向int的常量指標, p不可修改

int const *p;p為指標,指向常量,為int,所以p為指向int常量的指標, *p不可修改

int ** const p; p為常量,指向指標,指標指向int,所以p為指向int型指標的常量指標,p不可修改

int const**p; p為指標,指向指標,指標指向常量int,所以p為指標,指向乙個指向int常量的指標, **p為int,不可修改

int * const *p ; p為指標,指向常量,該常量為指標,指向int,所以p為指標,指向乙個常量指標,*p為指標,不可修改

int ** const *p; p為指標,指向常量,常量為指向指標的指標,p為指標,指向常量型指標的指標,*p為指向指標的指標,不可修改

int * const **p; p為指標,指向乙個指標1,指標1指向乙個常量,常量為指向int的指標,即p為指標,指向乙個指向常量指標的指標, **p為指向乙個int的指標,不可修改

C語言中修改const int 定義的常量()

真正讓我懂了的解釋 volatile 指出 i是隨時可能發生變化的,每次使用它的時候必須從i的位址中讀取,因而編譯器生成的彙編 會重新從i的位址讀取資料放在b中。而優化做法是,由於編譯器發現兩次從i讀資料的 之間的 沒有對i進行過操作,它會自動把上次讀的資料放在b中。而不是重新從i裡面讀。這樣一來,...

和 區別和聯絡, 和 區別和聯絡

和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...

rpx和樣式和class和flex

5 style 靜態的樣式統一寫到 class 中。style 接收動態的樣式,在執行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。例 6 class 用於指定樣式規則,其屬性值是樣式規則中類選擇器名 樣式類名 的集合,樣式類名不需要帶上.樣式類名之間用空格分隔。關於f...