這裏是我的書說:爲const char * VS字符*
char *p="Hello"; //pointer is variable, string is constant
*p='M'; // error
p="bye"; // works
那麼,在C我的第二個行不給我任何錯誤,無論是在C++中。
我在Windows 7上使用Turbo C++。現在是上述事情如果我嘗試在gcc或其他東西。
而且在類似的路線,如果上面的代碼被正確地書解釋,
#include<iostream.h>
void display(char*);
void display(const char*);
void main()
{
char* ch1="hello";
const char *ch2="bye";
display(ch1);
display(ch2);
}
void display(char* p)
{
cout << p << endl;
}
void display(const char* p)
{
cout << p << endl;
}
現在我的圖書考慮char*
和const char*
一樣的,因爲如果是那麼上面的代碼將無法正常工作,因爲參數將是相同的?
(雖然我得到的渦輪增壓+窗口輸出你好再見。)
哪一個是正確的?
字符串文字存儲在不可變的內存中,C++強烈建議僅使用const char *來引用它們。 –
@KerrekSB如果我不使用'const char *'會怎麼樣?它會自動對它進行類型轉換還是保持原樣? – Kraken
GCC告訴你有一個「從const char *'到'char *'」的棄用轉換。無論你有什麼,*寫入數據總是未定義的行爲。 –