2017-01-05 30 views
-3

我一直認爲這是錯誤的在C++中,直到它在vs2015工作。「的char * p =」 123" 是對還是錯?

現在是p不能改變什麼,爲什麼C++標準允許char* p="123"到是正確的。

如果C++標準迫使我們使用const char* p="123",是不是更好。

「他們」忘了嗎?或者......其他的原因?......我想konw。

+0

幾乎每個我用過的編譯器都會給出初始化的警告。該標準要求編譯器**針對不合格代碼發佈診斷**;一個警告就是一個診斷,並且已經完成了,編譯器可以自由地做任何事情,包括編譯具有特定實現意義的代碼。 –

回答

0

不,C++標準不允許這樣做,as for example g++ tells you

前段時間它是合法的,因此編譯器仍然支持它,但絕對不建議編寫這樣的代碼。

0

http://en.cppreference.com/w/cpp/language/string_literal

在C中,字符串文字類型char []的,並且可以直接 分配給一個(非const)字符*。 C++ 03也允許它(但不推薦使用它, ,因爲文本在C++中是常量)。 C++ 11不再允許這樣的分配 沒有演員。字符串文字不一定是C字符串...

因此,它不是標準允許今天。 VS2015(可能還有其他一些編譯器)是,但是不符合這個。

相關問題