为什么分段错误在下面的代码中



这是我的代码:

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

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

"

Dileep"和"Avina"是字符串常量。 试图改变它们是未定义的行为。 如果操作系统将它们放在只读内存中,您将出现故障。

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

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

那么名字[0][1]会是什么?

这应该是const char.

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

修改字符串文本是 UB。

相关内容

  • 没有找到相关文章

最新更新