我正在運行下面的代碼。我得到運行時錯誤。C++中的字符指針
#include <iostream>
using namespace std;
int main() {
char *p="hello";
//p="Hi";
*p='G';
cout<<*p;
return 0;
}
,如果這是給錯誤又是什麼用途爲const char * p的= 「你好」;在這種情況下,我的字符串應該是字符* P不變不等於 「你好」
我正在運行下面的代碼。我得到運行時錯誤。C++中的字符指針
#include <iostream>
using namespace std;
int main() {
char *p="hello";
//p="Hi";
*p='G';
cout<<*p;
return 0;
}
,如果這是給錯誤又是什麼用途爲const char * p的= 「你好」;在這種情況下,我的字符串應該是字符* P不變不等於 「你好」
char *p="hello";
*p='G';
你讓p
指向一個常量,「你好」。但是,然後你試圖修改什麼p
指向。根據定義,常量不能被修改。
const char * p =「hello」的用法是什麼 – Aman 2014-09-30 16:44:29
@Aman const char *有很多用法 – 2014-09-30 17:01:34
@Aman None真。你應該使用'const char * p =「hello」;'來避免這樣的錯誤。使用非const指針指向常量幾乎不是一個好主意。 – 2014-09-30 17:04:09
您無法更改鏈接器放置'char [5]'文字的內存。編譯時還要切換所有警告。 – 2014-09-30 16:33:17
自C++ 11以來,此代碼不再合法。字符串文字現在只會衰減爲'const char *'。 – jrok 2014-09-30 16:36:03
[C++程序員應該知道的所有常見未定義行爲是什麼?]的可能重複(http://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviours-that- ac-programmer-should-know-a) – Deduplicator 2014-09-30 16:36:07