怎样记忆const char*, char const*, char* const的区别
不得不说,const char*, char const*, char* const 是个令c++初学者头疼的问题,那么,有什么相对容易的方法区分和记忆这三者么?
如果你读过Bjarne的《The C++ Programming Language》,就应该接触过他所提到的办法,把*读成"pointer to(指向)",同时声明从右向左读。解释如下:
char * const p; // p is a const pointer to char; p是指向char的常量指针(char不是常量)
char const * p; // p is a pointer to const char; p是指向常量char的指针(p不是常量)
const char * p; // 同上。因为C++标准规定,const关键字放在类型或变量名之前等价的。C++里面没有const*的运算符
也可以理解为,可以用*做分界符,const靠近那侧,它本身就是常量。例如, char * const p; const靠近p,于是可以确定p是常量指针,而它指向的内容可变。
参考:http://www.91linux.com/html/article/program/cpp/20080101/9442.html