请告诉我这段代码有什么不对

0 c++

#include <iostream>
using namespace std;

int main()
{
    char *fp = "Alex";

    cout<<fp <<" "<<(void*)fp<<endl;

    *(fp+1) = 'p';

    cout<<fp <<" "<<(void*)fp<<endl;

}
Run Code Online (Sandbox Code Playgroud)

Ste*_*sop 6

您修改了一个字符串文字.这是未定义的行为.

增加编译器的警告级别,您需要该行的警告/错误char *fp = "Alex";,因为它会创建一个指向不可变数据的非const指针.它只允许在C++中与C兼容,而且它也是一种错误.


Ed *_* S. 5

我真的不喜欢这样回答"问题",但这是一个明显的错误:

*(fp+1) = 'p';
Run Code Online (Sandbox Code Playgroud)

fp在为其分配字符串文字时指向只读内存.因此,您无法修改fp指向的内容.如果要将字符串声明修改fp为a,char[]以便将其分配到堆栈中.