首先先看一段代码:
#include <iostream>
using namespace std;
int main()
{
char *name1 = "John";
*name1 = 'A';
cout << name1 << endl;
return 0;
}
编译以上code并没有什么warning和error, 但是运行就会造成crash。
再看一段代码:
#include <iostream>
using namespace std;
int main()
{
const char *name1 = "John";
*name1 = 'A';
cout << name1 << endl;
return 0;
}
编译时会有一个error报出,避免了类似上面代码运行时的错误。
其实在C++中:
char *name1 = "John"; == const char *name1 = "John";
所以在写程序的时候尽量用第二种方法。可以避免不应有的错误。
以上写法可以给字符串重新赋值,但是不能修改字符串,因为该字符串是一个常字符串。