常量指標與指標常量

2021-08-15 09:44:25 字數 1570 閱讀 1713

乙個簡單的例子如下:

const

intvalue = 1;

const

int value2 = 2;

const

int *pi = &value; //指標pi認為它指向的物件是const的,pi本身不是const的。

*pi = 4; //錯誤,pi認為它指向的物件value為const,故不能通過pi修改value值

pi = &value2; //正確的,pi的值可以修改

與const引用類似,

常量指標本身不是const的,自認為它指向的物件為const,如果它指向的物件為非const,那麼可以通過其它方式修改該物件,但不能通過該常量指標修改它。

const引用自身為const的,並且自認為它繫結的物件為const,如果它繫結的物件為非const,那麼可以通過其它方式修改該物件,但不能通過該引用修改它。

int

value = 1;

int value2 = 2;

int *const pi = &value; //指標pi是const物件,而不是認為它指向的物件是const的

*pi = 4; //正確,pi指向的物件value為非const,故可以通過pi修改value值

pi = &value2; //錯誤,pi是const的,故pi的值不能修改

常量指標,自認為指向const物件的指標。

const

intvalue = 1;

const

int *pi = &value;

如上**所示:

const限定符位於資料型別int之前,修飾的是資料型別int,表示該指標指向的物件為const int型別。

指標常量,即const指標

int

value = 1;

int *const pi = &value;

如上**所示:

const限定符位於資料型別int之後,修飾的是指標pi,表示該指標為const。

指向const物件的const指標

const

intvalue = 1;

const

int *const pi = &value;

不難理解,指向的物件的值不能修改,指向的位置也不能改。

觀察如下**:

typedef

string *pstring;

const pstring cstr;

那麼cstr指向的物件為const還是它本身為const。

答案是,cstr為乙個指向string型別的const指標。

即上面**等同於

string *const

cstr;

因為在語句const pstring cstr中const限定符修飾的是pstring,而pstring是乙個指標型別。故該宣告語句是把cstr宣告為乙個const指標(指標常量)。

指標常量與常量指標

指標常量與常量指標 指標常量是指定義的指標只能在定義的時候初始化,之後不能改變其值,格式如下 資料型別 const 指標常量名稱 例項如下 1char constp1 2int constp2 const 位於指標宣告符 的右側,這說明宣告的物件是乙個常量,而物件的資料型別是指標。所以第一句定義了乙...

常量指標與指標常量

首先,我告訴大家乙個小規則,就是像這樣連著的兩個詞,前面的乙個通常是修飾部分,中心詞是後面乙個詞,怎麼說呢。就像這裡的常量指標和指標常量。常量指標,表述為 是常量的指標 它首先應該是乙個指標。指標常量,表述為 是指標的常量 它首先應該是乙個常量。我再分開細細說明,常量指標,它是乙個指標,什麼樣的指標...

常量指標與指標常量

在c c 面試中經常會考到常量指標和指標常量,對初學者來說經常會分不清楚,參考網路上的資料,重新學習 記錄一下。常量指標 指向常量的指標,即指向的內容為常量,不可更改,但指標自身的值可以修改。常量指標常量 指標指向的內容不可改變,指標本身的值也不能改變。int a 3 int b 4 const i...