这是我的代码:
char * name[]={"Dileep","Avina"};
name[0][1]='A';
这里name [0]是一个指向字符串文字“Dileep”的char *。那么名称[0] [1]会是什么?为什么它给我运行时错误?
答案 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。