在C中修改字符串数组

时间:2016-03-24 09:43:20

标签: c pointers c-strings

我知道我们宣布char *c ="Hello";时意味着我们无法修改此字符串。但是为什么我能够在C中修改这个字符串数组。

char *p [] = {"Hello","World"}; 
*p = "Mode";

试图修改它会不会给我一个错误?

2 个答案:

答案 0 :(得分:6)

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

 char *p [] = {"Hello","World"};

这里p is an array (size 2) of pointer-to-char。这是一个变量,没有任何关于它的只读。它当前指向的字符串是只读的。

*p = "Mode";

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

相同
p[0] = "Mode";

答案 1 :(得分:0)

p是一个指针数组。这些指针是可修改的,但是它们的目标(它们指向的东西)不是。

*p等同于p[0],它是数组中的第一个指针。

*p = "Mode"修改指针p[0]的值,而不是字符串文字"hello"

相关问题