C 指標 const 陣列 引用

2021-10-03 20:16:54 字數 1482 閱讀 2087

禁止改寫指標(常量指標或常指標)

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 在一起,而不是將初始值拷貝給引...