ISO C++ forbids converting a string constant to 'char*'

· · 个人记录

缘起:

char * ps = "hellow";

这样的语句乍一看没啥特别的,然而如果你调用了这根可怜的指针来修改字符串的内容,你就会得到一个精彩的内存非法操作。

先说为什么:

从图片我们知道,这种方法定义字符串时,会返回一个指向全局只读储存区的指针,这个内存区的内容可不是想改就能改的。

应该使用这样的语句:

const char * ps = "hellow";
char ps[] = "hellow";