C++中的字符指针
我正在运行下面的代码。我得到运行时错误C++中的字符指针,c++,pointers,C++,Pointers,我正在运行下面的代码。我得到运行时错误 #include <iostream> using namespace std; int main() { char *p="hello"; //p="Hi"; *p='G'; cout<<*p; return 0; } 如果这是一个错误,那么const char*p=hello的用途是什么;在这种情况下,我的字符串应该是常量,而不是char*p=hello char *p="hello"
#include <iostream>
using namespace std;
int main() {
char *p="hello";
//p="Hi";
*p='G';
cout<<*p;
return 0;
}
如果这是一个错误,那么const char*p=hello的用途是什么;在这种情况下,我的字符串应该是常量,而不是char*p=hello
char *p="hello";
*p='G';
你把p指向一个常数,你好。但是,然后您尝试修改p指向的内容。根据定义,常量不能修改。您不能更改链接器放置字符[5]文本的内存。编译时也打开所有警告。此代码自C++11以来不再合法。字符串文字现在衰减为const char*only.Use char p[]=hello的可能重复;如果要创建一个由6个非常量字符组成的数组,并用值{h',e',l',l',o','\0'}初始化,那么const char*p的用途是什么=hello@Amanconst char*@Aman有很多用处,真的没有。您应该使用const char*p=hello;为了避免这样的错误。用非常量指针指向常量几乎从来都不是一个好主意。