“char*p=“123”是对还是错? 我一直认为C++在VS2015中是错误的。 p不能改变任何东西,为什么C++标准允许char *p=123是正确的。< /P> 如果C++标准强制我们使用const char p=123,不是更好吗?< /P> 他们忘记了?或者……其他原因?……我想知道。 < P>不,C++标准不允许这样做。

“char*p=“123”是对还是错? 我一直认为C++在VS2015中是错误的。 p不能改变任何东西,为什么C++标准允许char *p=123是正确的。< /P> 如果C++标准强制我们使用const char p=123,不是更好吗?< /P> 他们忘记了?或者……其他原因?……我想知道。 < P>不,C++标准不允许这样做。,c++,pointers,C++,Pointers,它在一段时间前是合法的,所以编译器仍然支持它,但绝对不建议编写这样的代码。From 在C语言中,字符串文字的类型为char[],可以直接赋值 对于非常量字符*.C++03也允许它,但不赞成它, 由于C++中的文字是const,C++ 11不再允许这样的赋值。 没有强制转换。字符串文字不一定是C字符串 因此,今天的标准不允许使用它。VS2015和其他一些编译器可能还不符合此标准。我使用的几乎所有编译器都会对该初始化发出警告。该标准要求编译器对不符合要求的代码发出诊断;警告是一种诊断,完成此操作后,

它在一段时间前是合法的,所以编译器仍然支持它,但绝对不建议编写这样的代码。

From

在C语言中,字符串文字的类型为char[],可以直接赋值 对于非常量字符*.C++03也允许它,但不赞成它, 由于C++中的文字是const,C++ 11不再允许这样的赋值。 没有强制转换。字符串文字不一定是C字符串


因此,今天的标准不允许使用它。VS2015和其他一些编译器可能还不符合此标准。

我使用的几乎所有编译器都会对该初始化发出警告。该标准要求编译器对不符合要求的代码发出诊断;警告是一种诊断,完成此操作后,编译器会发出警告iler可以自由地做任何事情,包括编译具有实现特定含义的代码。