这代码不是C而是C++!string s="abc";就是声明了一个string型变量s(实质是类string的对象),用常字符串abc初始化;给变量s重新赋值123字符串是合法的。没有“字符串是不可变”的规则,只有用const修饰的常字符串或直接创建的才是不可改变的,如:const char *p="abc";,是说abc不能变成axc等等,而不是说p不能指向别处……