C++11标准(ISO/IEC 14882:2011)在§ C.1.1
中规定:
char* p = "abc"; // valid in C, invalid in C++
对于C++,它是可以的,因为指向字符串字符串的指针是有害的,因为任何修改它的try 都会导致崩溃.但为什么它在C中有效?
C++11还表示:
char* p = (char*)"abc"; // OK: cast added
这意味着,如果将强制转换添加到第一条语句中,它将变得有效.
为什么C++中的第二个语句有效?它与第一个语句有什么不同?它还有害吗?如果是这样的话,为什么标准说没问题?