2變數與基本型別之const限定符

2022-08-20 06:48:11 字數 1544 閱讀 8210

一、const介紹:

const物件一旦被建立其值就不能再改變,所以const物件必須初始化。任何試圖對const賦值的行為都會引發錯誤。

二、初始化和const:

對const物件的主要限制就是只能在const型別的物件上執行不改變其內容的操作。

int i  = 42

;const

int ci = i; //

正確,i的值被拷貝給ci

int j = ci; //

正確被拷貝給j

以上操作都是被允許的,ci的常量特性僅僅在執行改變ci的操作時才會發揮作用。記住拷貝乙個物件的值並不會改變它。

三、預設情況下,const物件只在檔案內有效:

當我們定義了如下**時:

const

int i = 23;

編譯器將在編譯過程中把檔案內的變數i全部替換成23,所以預設情況下const物件只對檔案內的i有效。當其它檔案中也有const i的定義時,認為是兩個相互獨立的變數。

如果想在多個檔案之間共享const物件,則必須在變數的定義之前新增extern關鍵字。

四、const的引用:

繫結到const物件的引用稱為對常量的引用(reference to const)

引用(reference)的型別必須與所引用物件(object)的型別一致。但是有以下兩個例外:

五、頂層和底層const:

頂層const是說指標本身是個常量,底層const是表示指標指向的物件是個常量。

頂層const可以表示任意物件的物件是常量,比如算術型別、類、指標等。當執行物件的拷貝時,頂層const不受影響。你想想頂層const的意義是什麼?它就是一塊記憶體,這塊記憶體裡存的東西不能再改變,但是可以把這塊記憶體複製給另一塊記憶體。至於常量指標,是在棧上開闢的這塊記憶體(4bytes)不能再指向其他的位址,但是這塊位址可以拷貝啊。

1

const

int ci = 23;2

const

int *p2 = &ci;

3const

int * const p3 =p2;

45 p2 = p3;

例如上述**:

再看一下在底層const執行拷貝操作:

1

int *p =p3;

2 p2 =p3;

3 p2 = &i;

4int &r =ci;

5const

int &r2 = i;

6 int i = 0;

例如上述**;

永遠記住:指向非常量型別的指標可以轉成指向常量的指標,

六、const的儲存:

變數與基本型別

c 定義了一套包括算術型別和空型別在內的基本資料型別。其中算術型別包含了字元,整型數,布林值和浮點數。空型別不對應具體的值 具體應用不知 內建型別的機器實現 計算機以位元序列儲存資料,每個位元非0即1。736424 0 0 1 1 1 0 1 1 736425 0 0 0 1 1 0 1 1 736...

變數與基本型別

變數就是記憶體中開闢的一塊儲存空間 當需要使用乙個變數時,必須對該變數進行初始化存資料,取資料,運算元據,存資料型別名稱 位元組空間 使用場景 byte 1位元組 8位 儲存位元組資料 較常用 short 2位元組 16位 相容性考慮 很少用 int4位元組 32位 儲存普通整數 常用 long 8...

C Primer學習筆記2 變數與基本型別

1 整數 字元和布林值的算術型別合稱為整形。2 在windows中回車為 r n liunx中回車為 n mac中回車為 r 3 變數 提供程式可以操作的有名字的儲存區。4 左值 左值可以出現在賦值語句的左邊或者右邊。5 右值 右值只能出現在賦值的右邊,不能出現在賦值語句的左邊。數字字面值是右值 因...