c++ - 有没有办法改变任何索引处的 char* 值?

标签 c++ arrays char

据我所知,如果我们在程序中声明char*,那么它会从只读区域分配内存,因此我们无法更改任何char数组中的位置。

char *ch = "sitaram";
ch[2] = 'y';

上面的代码将无法正常运行,因为我们正在更改只读内存。

一种方法是我们可以将我们的 char 数组声明为

char ch[] = "sitaram";

然后我们可以更改索引处的值。

有什么方法可以更改 char* 中任何索引处的 char 值?

最佳答案

对可变字符串值使用现代 C++ 方法

std::string str{"sitaram"};
str[2] = 'y';

字符串文字(即包含在 "" 中的值)默认为 const char[n] 类型(其中 n 是长度字符串文字 +1 的空字符)在 C++ 中并且由于它们是不可变的,任何修改它们的尝试都会导致 undefined behavior .

关于c++ - 有没有办法改变任何索引处的 char* 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44911676/

相关文章:

c++ - 奇怪的 char* 编译错误?

C++ 重载函数和隐式转换

c++ - shared_ptr 空指针和赋值

c++ - g++ (mingw) 表示 to_string 不是 std 的成员

php - 在html表格中显示数组

arrays - `init(repeating:count)` 不应该通过引用工作吗?

c - 我需要详细解释为什么指针指向 [2],因为我不明白,我认为它指向 [4]

c++ - 就 SFINAE 而言,访问不存在的成员是否不被视为 "error"?

c++ - 如何声明一个空的 char* 并动态增加大小?

c++ - 递归地删除连续的重复项,给出无限递归