禁止改寫指標(常量指標或常指標)
int x=0;
int * const pint = &x;
存放位址的變數pint不可變,但pint可指向其他變數,x的值可變。
禁止改寫間接引用
int x=5;
const int *pint=&x;
pint中存放的位址可以變,但x的值不可變。
既禁止改寫指標,又禁止改寫間接引用
int x=5;
const int * const pint = &x;
在c++中陣列和指標的關係十分密切,兩者的內部處理方式幾乎相同。訪問陣列中的元素有下標和指標兩種形式,而這兩種形式都是基於指標算術機制實現的。
陣列名指標
c++編譯器將陣列名解釋為指標,陣列名也是指標,可以把陣列名當做指標。
指向陣列的指標(陣列指標)
在很多情況下,陣列名可以當成指標用。陣列名是常量不是變數,其值是固定的,c++不允許修改陣列名的值。這樣不夠靈活,這樣就需要乙個指標變數可以修改陣列的某個元素。陣列名指標,只指向陣列所佔區域的第乙個位址。
指標陣列
存放指標的陣列,例如:
char* words[6]=[「zero」,「one」,「two」,「three」,「four」,「five」]
引用為某個變數的乙個別名,與對變數直接操作完全一樣。
在c++中正確使用引用,可以使程式更加簡潔和高效。
引用本身沒有位址。
引用的宣告
型別識別符號 &引用名=初始值
int x = 10;
int &rx = x;
此處的&為引用符號,不是取位址符號。
宣告中的初始值必須為變數或引用。
注意:一般rx被宣告後是不允許被修改的
宣告引用時必須同時進行初始化
宣告變數被引用後相當於有兩個名字,即x相當於有兩個名字
宣告語句中的型別識別符號必須與初始值的型別一致
引用的特點
對引用的任何一種操作相當於對原始變數的直接操作。
宣告乙個引用並不是新定義了乙個變數,rx相當於x,引用rx不占用任何記憶體空間,rx和x占用同一塊記憶體空間。
引用的限制
不能建立陣列的引用。因為陣列是由若干個元素所組成的集合。
不能宣告乙個引用的引用。可以宣告指標的指標但是不是宣告引用的引用。因為引用本身沒有位址,所以不能給引用起乙個別名。
不能宣告指向引用的指標。因為引用本身就沒有位址,不能定義乙個指標指向它。
int *p=0; //空指標,不是野指標
int b=2;
*p=b; //給空指標所指位置賦值,報錯
p=&b; //這樣才是使p指向變數b的位址
c 引用 指標 const
1 const定義常量 const int valuename value 2 const與指標 指標常量 int const p 指標的位址不允許修改,值可以修改 常量指標 const int p 值不能修改,位址可以修改 指向常量的指標常量 const int const p 3 const與函...
引用,const引用,指標
引用,const引用,指標 一 引用 1 定義 引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。2 宣告方法 型別 引用變數名 已定義過的變數名。3 特點 l 乙個變數可以取多個別名 但引用與其所代表的變數共享同一記憶體空間 模擬 人的別名 l 引用必須初始化,且必須宣告引用的型別...
指標和引用,const 指標和const 引用
指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...