C++里面const 放在哪里是个很容易混淆的。
一般有:
const char *a="abc";
char *const b="def";
有个很好的记法:
const 就近原则
(一)
const char *a = "abc";
const 就近修饰 整个
char *a="abc";
所以,a指针指向的"abc"的这个内容是read_only,不能改变的。
所以
const char *a = "abc";
a[0]='e';//是错的,不能改变a指向的地址中的内容
a="def";//是对的,能够改变a指向的地址
(二)
char * const b = "def";
const 就近修饰指针 b
所以,指针b不能被更改,也就是说不能指向别的地址。
char * const b ="def";
b[0]='a';//是对的,指针指向的内容是可改变的
b="abc";//是错的,指针的指向不能被改变
总结:
(一)写代码要注意const的位置,希望我总结出来的就近原则能帮助你记忆。
(二)写代码能不改变的尽量const,比如说传入的参数,比如说C++的常引用,这对数据的安全性有好处。