在C中修改字符串数组

Abd*_*iri -4 c pointers c-strings

我知道当我们宣布一种char *c ="Hello";手段,我们不能修改这个字符串.但是为什么我能够在C中修改这个字符串数组.

char *p [] = {"Hello","World"}; 
*p = "Mode";
Run Code Online (Sandbox Code Playgroud)

试图修改它不应该给我一个错误吗?

Jon*_*art 6

你不是在任何地方修改字符串(文字).

 char *p [] = {"Hello","World"};
Run Code Online (Sandbox Code Playgroud)

p是指针指向的数组(大小为2)char.这是一个变量,没有任何关于它的只读.它当前指向的字符串是只读的.

*p = "Mode";
Run Code Online (Sandbox Code Playgroud)

您只是将该数组的第一个元素更改为指向另一个(只读)字符串.这与:

p[0] = "Mode";
Run Code Online (Sandbox Code Playgroud)