在linux下编写C++代码:linux
char* p="wqojbk";
会跳出警告:c++
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
这是由于在赋值操做的时候,等号两边的变量类型不同,那么编译器会进行一种叫作 隐式转换(implicit conversion) 的操做来使得变量能够被赋值。上面的表达式中,等号右边的"eqojbk"是一个不变常量,在c++中叫作string literal,type是const char *,而p则是一个char指针。若是强行赋值就是将右边的常量强制类型转换成一个指针,结果就是咱们在修改一个const常量。编译运行的结果会因编译器和操做系统共同决定,有的编译器会经过,有的会抛异常,就算过了也可能由于操做系统的敏感性而被杀掉。spa
修改方法:操作系统
const char* p="wqojbk";
或者指针
char* p=(char*)"wqojbk";