C ++,char *字符串修改

时间:2017-04-01 15:30:25

标签: c++

我是C ++的新手。 我有一个程序:

#include <iostream>

int main()
{
   char* str = "Test";
   *str = 'S';
}

问题是,为什么* str =&#39; S&#39;崩溃程序? 据我所知,str必须指向字符串的第一个字符(好吧,char数组),所以理论上我应该能够修改它。 是因为内存对于定义的常量值是只读的吗? 我正在使用gcc 5.3.0。

1 个答案:

答案 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*

相关问题