c - 修改C中的字符串数组

标签 c pointers c-strings

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

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

这不应该给我尝试修改它的错误吗?

最佳答案

您没有在任何地方修改字符串(文字)。

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

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

*p = "Mode";

您只需更改该数组的第一个元素以指向不同的(只读)字符串。这与:

p[0] = "Mode";

关于c - 修改C中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197105/

相关文章:

c - Pebble SDK - 带字符串的结构数组(可能还有指针)

c++ - 在 C/C++ (Linux)、LGPL 或 BSD 中确定 CPU 速度/内存是一项要求

c - 从 C 字符串中去除第一个和最后一个字符

c - 如何仅使用指针和指针算术删除 c 中所有出现的字母。

c++ - strcpy 可以在 Arduino 上编辑内存地址吗?

c - 将带有空格的字符串拆分为 C 中的字符串 vector

c - 如何解决C中的默认垃圾值?

arrays - 变量零初始化会降低性能吗?

c - 将字符串放在 float 应该在的位置?

c++ - 使用指针c++在函数中反转cstring数组