1. const char * 与 char *
(1) const char * 不能直接赋值给char *:假如可以的话,,那么通过char*就可以修改const char指向的内容了,这显然是自相矛盾的。
如果非要把const char *的值赋给char *, char*可以开辟新的内存空间,用strcpy()拷贝过去;
例如:
void main()
{
const char * cp = "abcde";
char * p = new char[10];
strcpy(p, cp);
cout << p << endl;
}
(2) char * 可以直接转换为const char *
2. const char * 、char const * 与 char * const
(1) const char* 和 char const *是一回事,都是表示该指针指向常量字符,指针本身可以改变,指向另一个字符串。
比如: const char* p = "12345";
char ss[] = "abc";
p = ss;
但是这种类型指针不能复制给char*(如上面的标题1解释)
(2) char * const 表示指针不能改变,其指向的字符串可以改变。
比如:
char aaa[] = "abcd";
char* const sss = aaa;
sss[1] = 'a';
区分它们的原则就是:以*为分界线,const 靠近哪个,哪个就是常量.