C++(三)const char * a1和 char const * a2

http://blog.csdn.net/emaste_r/article/details/7642715

C++裏面const 放在哪裏是個很容易混淆的。

一般有:

[html] view plaincopy
  1. const char *a="abc";  
  2.  char *const b="def";  
有個很好的記法:

const   就近原則

(一)

  1. const char *a = "abc";  
const 就近修飾 整個
  1. char *a="abc";  
所以,a指針指向的"abc"的這個內容是read_only,不能改變的。

所以

  1. const char *a = "abc";  
  2. a[0]='e';//是錯的,不能改變a指向的地址中的內容  
  3. a="def";//是對的,能夠改變a指向的地址  


(二)

  1. char * const b = "def";  
const 就近修飾指針 b

所以,指針b不能被更改,也就是說不能指向別的地址。

  1. char * const b ="def";  
  2. b[0]='a';//是對的,指針指向的內容是可改變的  
  3. b="abc";//是錯的,指針的指向不能被改變  

總結:

(一)寫代碼要注意const的位置,希望我總結出來的就近原則能幫助你記憶。

(二)寫代碼能不改變的儘量const,比如說傳入的參數,比如說C++的常引用,這對數據的安全性有好處。


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