http://blog.csdn.net/emaste_r/article/details/7642715
C++裏面const 放在哪裏是個很容易混淆的。
一般有:
- const char *a="abc";
- char *const b="def";
const 就近原則
(一)
- const char *a = "abc";
- char *a="abc";
所以
- const char *a = "abc";
- a[0]='e';//是錯的,不能改變a指向的地址中的內容
- a="def";//是對的,能夠改變a指向的地址
(二)
- char * const b = "def";
所以,指針b不能被更改,也就是說不能指向別的地址。
- char * const b ="def";
- b[0]='a';//是對的,指針指向的內容是可改變的
- b="abc";//是錯的,指針的指向不能被改變
總結:
(一)寫代碼要注意const的位置,希望我總結出來的就近原則能幫助你記憶。
(二)寫代碼能不改變的儘量const,比如說傳入的參數,比如說C++的常引用,這對數據的安全性有好處。