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。