我是C ++的新手。 我有一个程序:
#include <iostream>
int main()
{
char* str = "Test";
*str = 'S';
}
问题是,为什么* str =&#39; S&#39;崩溃程序? 据我所知,str必须指向字符串的第一个字符(好吧,char数组),所以理论上我应该能够修改它。 是因为内存对于定义的常量值是只读的吗? 我正在使用gcc 5.3.0。
答案 0 :(得分:3)
为什么* str =&#39; S&#39;崩溃程序?
因为您不允许修改字符串文字。 C ++标准允许它们存储在只读存储器中。
实际上,如果启用编译器警告,则会得到:
prog.cc:5:16: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
char* str = "Test";
^~~~~~
指向字符串文字时始终使用const char*
: