C C 中的常量指標與指標常量

2021-06-18 01:16:44 字數 1214 閱讀 2138

常量指標

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

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

inta=

0,b=1

;const

int*

p;

//宣告常量指標pp=&

a;

//p指向ap=&

b;

//修改指標p讓其指向b,允許*p

=2;

//不允許

指標常量

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

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

inta=

0,b=1

;int

*const

p1=&

a; int

*const

p2;

//不允許,必須對其初始化

p2=&

b;

//不允許,p2是常量不允許作為左值*p1

=2;

//允許修改指標*p1的值

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

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

void

exchange(

int*

const

a,int

*const

b)

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

C C 中的常量指標與指標常量

常量指標 常量指標是指向常量的指標,指標指向的記憶體位址的內容是不可修改的。常量指標定義 const int p a 告訴編譯器,p是常量,不能將 p作為左值進行操作。但這裡的指標p還是乙個變數,它的內容存放常量的位址,所以先宣告常量指標再初始化是允許的,指標也是允許修改的,例如 int a 0,b...

C C 指標常量和常量指標

常量指標 常量指標是指向常量的指標,指標指向的記憶體位址的內容是不可修改的。常量指標定義 const int p a p 告訴編譯器是常量,不能將 p作為左值進行操作。但這裡的指標p還是乙個變數,它的內容存放常量的位址,所以先宣告常量指標再初始化是允許的,指標也是允許修改的,例如 int a 0,b...

常量指標和指標常量 C C

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