常量指針與指針常量

  • 常量指針//指向const對象的指針
const int * ptr;//指向一個int類型常量的指針,const限制其指向對象的類型,並非 ptr本身

ptr 本身不是一個常量,不需要對其初始化。同時,也允許對其進行二次複製,使其指向另一個const對象。
唯一不行的就是,不能通過該指針修改其指向的const 對象

const int a = 1;
const int b = 2;
int c = 3;
ptr = &a;
prt = &b;// ok
ptr = &c;// ok
*ptr = 2;// error. can not change the b through ptr
int *d = NULL;
d = &a// error. invalid conversion from 'const int*' to 'int'

允許將一個非const對象的地址賦給指向const對象的指針,但不允許將const對象的地址賦值給一個普通的、非const對象的指針,這樣會導致編譯錯誤。

  • 指針常量//const 指針
int const* ptr1;//指向int類型類型的常量指針,必須初始化

顧名思義,該指針值可以不可以修改,但可以修改該指針指向的對象的值。

int a  = 1int *const prt1 = &a;
* ptr1 = 2;
  • 指向const對象的const 指針
    綜合上面兩點,可以理解這個東西
  • 指針和typedef
typedef string *pstring;// pstring是一個 指向string類型的指針
const pstring cstr;// 真正代表的是 string *const cstr, 因爲 const修飾的是pstring類型,這是一個指針,因此該句聲明是把cstr定義爲指向string類型的const指針。
pstring const cstr;// 與 上面一句聲明一樣,比較難理解。
發佈了31 篇原創文章 · 獲贊 17 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章