指針常量和常量指針

*象徵着地址,const象徵着內容;誰在前面誰就不允許改變。讀的時候:從右向左讀

int a =3;  
int b = 1;  
int c = 2;  
int const *p1 = &b;//const 在前,定義爲指向常量的指針
int *const p2 = &c;//*在前,定義爲常來那個指針

指向常量的的指針p1:指向的地址可以變,但內容不可以重新賦值,內容的改變只能通過修改地址指向後變換。
p1 = &a是正確的,但 *p1 = a是錯誤的。

常量指針p2:指向的地址不可以重新賦值,但內容可以改變,必須初始化,地址跟隨一生。
p2= &a是錯誤的,而*p2 = a 是正確的。

指向常量的指針
  不能用於改變其所指對象的值。要想存放常量對象的指針,只能使用指向常量的指針。
  

const double pi = 3.14
double *ptr = π      //錯誤:ptr是一個普通指針
const double *ptr = π        
*cptr = 42;             //不能給*cptr賦值

  指針的類型必須與其所指對象的類型一致,但有兩個例外,第一例外時:允許一個指向常量的指針指向一個非常量的對象。所謂指向常量的指針僅僅要求不能通過該指針改變對象的值,而沒有規定那個對象的值不能通過其他途徑改變。
const指針(常量指針)
  常量指針必須初始化,而且一旦初始化完成,則它的值(也就是存放在指針中的那個地址)不能再改變了。
  指針本省是一個常量並不意味着不能通過指針修改其所指對象的值。

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