C C 指標常量和常量指標

2021-06-28 20:00:52 字數 1314 閱讀 5202

常量指標

常量指標是指向常量的指標,指標指向的記憶體位址的內容是不可修改的。

常量指標定義「const int p = &a;」p 告訴編譯器是常量,不能將*p作為左值進行操作。但這裡的指標p還是乙個變數,它的內容存放常量的位址,所以先宣告常量指標再初始化是允許的,指標也是允許修改的,例如:

int a =0,b=1;

const

int *p; //宣告常量指標

p = &a; //p指向a

p = &b; //指標p可以修改,指向b

*p = 2; //不允許,指標所指向的內容是常量,不可修改。

指標常量

指標常量是指標的常量,它是不可改變位址的指標,但是可以對它所指向的內容進行修改。

指標常量的定義:「int *const p = &a;」 它告訴編譯器,p是常量,不能作為左值進行操作,但是允許修改其指向的內容,既是*p是可以修改的。指標常量必須在宣告的同時對其進行初始化,不允許先宣告乙個指標常量隨後再對其賦值,這和宣告一般的常量是一樣的,例如;

int a=0,b=1;

int *const p1 =&a; //宣告的同時要賦值

int *const p2; //不允許

p2 = &b; //不允許,p2是常量不允許作為左值

*p2 = 2; //允許修改*p2的內容

如果指標作為函式引數,當我們不想被呼叫函式隨意修改引數指標而只是想修改引數指標指向的內容時,我們常把指標常量作為引數

例如:

有兩個整形變數a,b,我們寫個函式用於交換a,b的值,利用指標作為形參,函式修改引數指標的值是我們不希望的,這時可將引數設為指標常量,如果函式對指標修改編譯是將報錯。

void exchange(int

*const a,int

*const b)

事實上,如果函式不修改引數本身的值,我們一般對引數加上const限定,這也是提高**質量的乙個小技巧,在類的方法中,如果方法不修改類屬性的值,我們也常將方法加上const。

綜合測試:

#include 

using

namespace

std;

void swap(int *const p1, int *const p2)

void main()

常量指標和指標常量 C C

按英文的字面意思,從右向左理解就比較清楚了 const char pointer 常量指標 底層const pointer to const 字面意思 指向常量的指標,不能通過這個指標修改指向的內容 char const pointer 指標常量 頂層const const pointer 字面意思...

C C 指向常量的指標和常量指標

由於之前沒有系統的看過書籍,導致概念混淆,由 c primer 中得到,const修飾指標有兩種形態,分別是指向常量的指標 pointer to const 和常量指標 const pointer ps 對之前看過此部落格的同學表示抱歉 int a 1 int b 2 const int p a 等...

再學C C 之 指標常量 和 常量指標

1 指標常量,將指標的指向當成常量。即指標變數的值只能在定義的時候初始化,定義後不能修改,也就是說不能改變指標變數的指向。但是不影響所指物件的訪問特徵。其定義形式為 型別 const 指標 型別是該指標所指物件的型別,為指標型別說明符。例項1 int var1 100 int var2 200 初始...