char*是一个指向char的指针,是可以改变指针指向的值。但是在C语言中可以有指向常量的用法,比如char* s = "abc"; 通过 s 是不可以改变字符串常量的数值的, 然而像 s[0] = 'd'; 的这种写法在C语言中是可以通过编译的,错误会发生在执行时,C语言的宗旨是认为程序员可以做正确的事情。C++中这种写法是不会通过编译的,g++上测试会提示deprecated conversion from string constant to ‘char* 。总而言之,无论在C还是C++中,规范而正确的写法应该是像这样 const char* s = "abc";