一、const介紹:
const物件一旦被建立其值就不能再改變,所以const物件必須初始化。任何試圖對const賦值的行為都會引發錯誤。
二、初始化和const:
對const物件的主要限制就是只能在const型別的物件上執行不改變其內容的操作。
int i = 42;const
int ci = i; //
正確,i的值被拷貝給ci
int j = ci; //
正確被拷貝給j
以上操作都是被允許的,ci的常量特性僅僅在執行改變ci的操作時才會發揮作用。記住拷貝乙個物件的值並不會改變它。
三、預設情況下,const物件只在檔案內有效:
當我們定義了如下**時:
constint i = 23;
編譯器將在編譯過程中把檔案內的變數i全部替換成23,所以預設情況下const物件只對檔案內的i有效。當其它檔案中也有const i的定義時,認為是兩個相互獨立的變數。
如果想在多個檔案之間共享const物件,則必須在變數的定義之前新增extern關鍵字。
四、const的引用:
繫結到const物件的引用稱為對常量的引用(reference to const)
引用(reference)的型別必須與所引用物件(object)的型別一致。但是有以下兩個例外:
五、頂層和底層const:
頂層const是說指標本身是個常量,底層const是表示指標指向的物件是個常量。
頂層const可以表示任意物件的物件是常量,比如算術型別、類、指標等。當執行物件的拷貝時,頂層const不受影響。你想想頂層const的意義是什麼?它就是一塊記憶體,這塊記憶體裡存的東西不能再改變,但是可以把這塊記憶體複製給另一塊記憶體。至於常量指標,是在棧上開闢的這塊記憶體(4bytes)不能再指向其他的位址,但是這塊位址可以拷貝啊。
1const
int ci = 23;2
const
int *p2 = &ci;
3const
int * const p3 =p2;
45 p2 = p3;
例如上述**:
再看一下在底層const執行拷貝操作:
1int *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 右值 右值只能出現在賦值的右邊,不能出現在賦值語句的左邊。數字字面值是右值 因...