通过指针进行C ++初始化char数组

Joz*_*zko 1 c++ pointers

在我的C ++课程中,使用了这种初始化。

char *a = "abcd";
Run Code Online (Sandbox Code Playgroud)

但是,当我使用它时,编译器会抱怨:

类型“ const char *”的值不能用于初始化“ char *”类型的实体

* a应该是指针。请问有什么问题?我使用Visual Studio 2017

Mat*_*her 5

您需要指定 const

const char *a = "abcd";
Run Code Online (Sandbox Code Playgroud)

原因是该字符串"abcd"是一个常量,因此不应分配给非const指针。在旧的C ++(AFAIK)中是可以容忍的,但是自C ++ 11起就没有,VS2017 with /permissive-做正确的事,并禁止这种不良做法。