C++雜談(一)const限定符與const指針

const限定符

c++有了新的const關鍵字,用來定義常變量,可以替C語言中的#define。關於const限定符,有以下需要注意:

1.創建後值不再改變

2.作用範圍在文件內有效

3.添加extern關鍵字,使多個文件共用同一個常變量

另外,int const與const int是等效的。

 

const指針

創建const指針時,const,*和變量類型的符號順序會給人很大的困擾。一般來說,按照從右向左讀的方式來判斷其含義。

1.

const int *p=&i;

與下面的語句等效。

(const int) *p=&i;

代表指向const int類型的指針。

2.

int *const p=&i;

與下面的語句等效

int *(const p)=&i;

代表指向int類型的常指針。這個指針一直指向i,不可以改變指針指向的位置,可以改變所指向的變量的值。

*p=5;//正確

3.

const int *const p=&i;

代表指向常變量的常指針,不可以改變指針的指向,也不可以改變指針所指變量的值。

*p=5;//錯誤

所指的類型是const int,不可以修改它的值。

這裏,左邊的const叫做底層const,右邊的const叫做頂層const

 

判斷const指針的簡便方法

把*讀作"pointer to",從右至左念:

b是一個常量

const int b;  /* b is a int const */
int const b;  /* b is a const int */

p是一個普通指針,指向一個常量

const int *p; /* p is a pointer to int const */
int const *p; /* p is a pointer to const int */

p是一個常量指針,指向一個普通變量

int *const p;  /* p is a const pointer to int */

p是一個常量指針,指向一個常量

const int *const p;  /* p is a const pointer to int const */

int const *const p; /* p is a const pointer to const int */

本文由 whchina(江城老溫)原創發佈,轉載請註明出處,江城老溫 as a thinker。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章