可以更改 const char* 变量吗?

Kan*_*ony 1 c string

const char* ch  = "text";
ch  = "Long text";
Run Code Online (Sandbox Code Playgroud)

写这样的代码可以吗?是否可能有缓冲区溢出?或者它可以写入不允许的地址?

dbu*_*ush 5

本声明:

const char* ch = "text"; 
Run Code Online (Sandbox Code Playgroud)

只是说什么ch 指向const。这并不是说ch 本身const

什么是ch正与初始化是一个字符串的地址,字符串文字是只读的。当你这样做时:

ch  = "Long text";
Run Code Online (Sandbox Code Playgroud)

您正在分配不同字符串文字ch的地址。所以你在做什么是明确的。

您是否尝试过这样做:

ch[0] = 'X';
Run Code Online (Sandbox Code Playgroud)

您会收到编译器错误,因为您正在尝试修改const. 如果您放弃const限定符并完成此操作,您的代码很可能会崩溃,因为您正在尝试修改只读的字符串文字。