转自此链接
当我们将一个character pointer variable 初始化成一个string literal的时候, 就会出现此类错误。
在最新的C标准或者C++标准中, 使用如下语句, 无论使用gcc 或者g++命令, 都会报出上面的错误, 不能通过编译:
char* x = "hello";
char *背后的含义是:给我个字符串,我要修改它。
而理论上,我们传给函数的字面常量是没法被修改的。
所以说,比较和理的办法是把参数类型修改为const char *。
这个类型说背后的含义是:给我个字符串,我只要读取它。
解决方案
如下:
方法1:char* 改为const char* 修饰即可:
const char* x = "hello";
方法2: 方案是使用string:
string x = "hello";
方法3: 将string literal转型为char* 的type:
char* x = (char*)"hello";