兩類聲明:C++字符串字面型和申報
char* str1 = "string 1";
和
char str2[] = "string 2";
我的編譯器不允許我使用第一次申報與爲const char一個錯誤 不正確的轉換[8] char *。看起來不錯, 這樣的版本:
const char* str1 = "string 1";
編譯通過。
請澄清我的理解。 我相信,如果我們宣佈兩個版本,例如在main()中, 第一個(const char *) - 唯一的指針將被分配到堆棧上並用數據段中的某個地址初始化。 第二個版本(char []) - 整個數組符號將被放置在堆棧上
據我所見,字符串常量現在總是有一個const char []類型。 是使用const char * depricated?僅用於C兼容?
其中每個版本將存儲字符串?
C和C++是不同的語言!任何你期望他們表現完全一樣的理由?這不是關於C. – Olaf
這很有趣,''string 1''是一個'const char [9]',而不是'const char [8]'。 – aschepler
@aschepler不好笑 - 正常。有一個結尾的0字符組成了9 ... – Aconcagua