为什么在以下代码中出现分段错误?

时间:2016-06-09 16:45:21

标签: c++ segmentation-fault

这是我的代码:

char * name[]={"Dileep","Avina"};
name[0][1]='A';

这里name [0]是一个指向字符串文字“Dileep”的char *。那么名称[0] [1]会是什么?为什么它给我运行时错误?

2 个答案:

答案 0 :(得分:3)

"迪利普"和#34; Avina"是字符串常量。试图改变它们是未定义的行为。如果操作系统将它们放入只读存储器中,则会出现故障。

答案 1 :(得分:0)

  

name [0]是一个指向字符串文字的字符*" Dileep"。

不,char * name[]是虚假的。 "Dileep" string literal的类型为const char[7],由于从字符串文字转换为char *,因此自C ++ 11以来不允许使用您的代码。 char * name[]={"Dileep","Avina"};应为const char * name[]={"Dileep","Avina"};

  

那么名称[0] [1]是什么?

它应该是const char

  

为什么它会给我运行时错误?

修改字符串文字是UB。