区别准则:*左边的const都是指向的对象是常量,而*右边的const是指针的指向不能被改变。
一个指向常量的指针可能指向是一个非常量对象,但是一个指向非常量的指针不能指向一个常对象。const T *pct= new T;//ptr to const T
T* const pct=new T;//const ptr to T
如
8.指针的指针(pointers to pointer)const T *pct=new T;//ptr to const and refer to a non-const object
const T acT;
T *pt=&acT;//error,ptr to non-const cann't refer to a const object
尽量减少使用指针的指针作为函数形参,尽量使用指针的引用!
对比如下:
void scan(const char **p, char c)
{
while(**p && **p !=c)
++*p;
}
void scan(const char *&p,char c)
{
while(*p && *p!=c)
++*p;
}
char s[]="hi, i am sshong";
const char *cp=s;
scan(cp, ',');