为什么当字符串由指针表示法声明时,我无法按索引更改字符串?

  • 本文关键字:字符串 索引 声明 指针 表示 c
  • 更新时间 :
  • 英文 :


例如:

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';

相关内容

  • 没有找到相关文章

最新更新