例如:
char stringer[]="hello";
stringer[2]='A';
以上操作用于将'l'
更改为'A'
。但如果我做以下操作:
char *stringer="hello";
stringer[2]='A';
这不起作用,有原因吗?
正如一些程序员在评论中的回答:
文字字符串实际上是不可修改的字符数组。使用char *stringer="hello";
,可以使stringer
指向这样一个数组的第一个字符。试图修改其内容会导致未定义的行为。
这就是为什么在指向文字字符串时应该始终使用const char *
的原因。
如果指针指向允许修改的内容,则可以在使用指针时修改字符串。例如
char stringer[] = "hello";
char *pointer = stringer;
pointer[2] = 'A';