我总是认为它在c ++中是错的,直到它在vs2015中工作。
既然p不能改变任何东西,为什么c ++标准允许char* p="123"
是正确的。
如果c ++标准强制我们使用const char* p="123"
,那就更好了。
"他们"忘记 ?或者......其他原因?...我想知道。
答案 0 :(得分:0)
不,C ++标准不允许这样做as for example g++ tells you。
前段时间这是合法的,所以编译器仍然支持它,但绝对不建议编写这样的代码。
答案 1 :(得分:0)
来自http://en.cppreference.com/w/cpp/language/string_literal
在C中,字符串文字的类型为char [],可以直接赋值 到(非常)char *。 C ++ 03也允许它(但不赞成使用它, 因为文字是C ++中的const)。 C ++ 11不再允许此类分配 没有演员。字符串文字不一定是C字符串......
因此,标准不允许今天。 VS2015(可能还有一些其他编译器)但不符合此类。