const char *和char *const的区别

char * const   [指向字符的静态指针]

英文[ const pointer to char ]

const char * [指向静态字符的指针]

[pointer to const char]

char * 这个太简单了,不说了

那么现在东西很明显了,什么可以改变什么不可以

很明显,第一种指针是不能变的,as it is const

第二种指针可以变,但是字符不能变,它是const char

它的好处是参数不易出现问题,有很好的稳定性。

 

摘自:大家看看:const char* const GetName(const char* pUser) const中四个const的用法


 
1)const修饰一个变量,是表名这个变量不能被修改。如果放在成员函数前面是表名成员函数的返回值不能被修改,如果是修饰成员函数的形式参数,则表名这个参数在函数中不能被修改。        
2)当const放在函数的最后面时表明这个成员函数是“只读”函数,不能修改它设计的所有类成员对象。  
 
第一个const是表示返回一个字符指针常量  
第二个是表示成员函数的返回值不能被修改,正好与第一个相符  
第三个const表示这个参数在函数中不能被修改  
最后一个就是成员函数是“只读”函数,不能修改它设计的所有类成员对象
char *pA;
....
const char *pB = pA;
没问题!
 
char **ppA;
...
const char **ppB = ppA;
无法从“char ** ”转换为“const char ** ”!!!
 
ppA是一个指向char *的指针, ppB是一个指向const char *的指针,根据最前面的试验,const char *和char *是相容的,char* 可以转换为const char *,但是相容性不能传递,编译器就不知道const char **和char **之间有什么联系了,呵呵.