常量的指針與指針常量

1.指針常量,是表明該指針是一個常量,該指針不能再指向其他地址。其表示形式是 int *const p; 常量指針,是表明該是指向常量的指針,這個地址中的值是不能改變的。其表示形式是const int *p; 或 int const *p; 。也就是const離誰近誰就無法改變,也可以記爲:指針是常量,常量的指針。

下面例子:

#include <iostream>

using namespace std;

int main(int argc, char *args[])
{
 int *b = new int[2];
 int *c = new int[2];
 int * const * const a = &b;
 a = &c;//錯誤,是因爲第一層指針和第二層指針都是指針常量
 return 0;
}

2.對於const int * const (* const func)() const {} 函數,第一個const表示返回指針指向值不可修改,第二個表示返回的int型的指針不可修改,第三個表示指向函數名(本身也是一個指針常量)的指針(即第二層指針)也是不可以修改的。最後一個與前三個意義相差較大,表示這個函數不能改變類內成員的(只有類內成員函數可以修飾)。

3.引用不具備上面的特性,const int &p2 = p1; 或 int const &p2 = p1; 表示其值無法改變。但int & const p2 = p1; 語法錯誤,是因爲引用就是一個別名,指向一個對象時就無法再指向其他,本身就有常量的性質。再用int & const p2 = p1;標註是語法錯誤。

發佈了30 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章