可以更改constchar*变量吗?

const char* ch  = "text";
ch  = "Long text";

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

回答

本声明:

const char* ch = "text"; 

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

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

ch  = "Long text";

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

您是否尝试过这样做:

ch[0] = 'X';

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


以上是可以更改constchar*变量吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>