【发布时间】:2020-07-22 14:18:17
【问题描述】:
这是一个例子
char *pointer = “abc”;
如果我尝试更改此字符串 *(指针+1)='D';
返回255错误,为什么?
【问题讨论】:
这是一个例子
char *pointer = “abc”;
如果我尝试更改此字符串 *(指针+1)='D';
返回255错误,为什么?
【问题讨论】:
简短的回答是因为这是语言的定义
更长的答案是程序中包含的字符串是已编译程序文件的一部分,就像代码本身一样。在大多数现代操作系统中,这通常是只读的。为了使这些字符串可写,操作系统或语言运行时必须将它们复制到可写数据块中。由于这会耗费时间和内存,而且通常不是人们想要的,因此 C++ 默认不会这样做。
【讨论】: