复制 c++ 字符指针

Copying c++ char pointers

本文关键字:指针 字符 c++ 复制      更新时间:2023-10-16

将值复制到字符指针时遇到此问题。如果我写

char* data = "abcdef";
char* d;
d[0] = data[0];
d[1] = data[1];
d[2] = data[2];
d[3] = data[3];
printf("%s ", d);

输出为abcd但如果将最后一个块替换为一个 this for 循环,它基本上是等效的,它什么都不打印出来

for(int i = 0; i < 4; i++) {
   d[i] = data[i];
}

谁能解释一下有什么区别?

这两个程序都有未定义的行为,因为您没有为d分配内存。他们可以自由地以他们喜欢的任何方式行事,包括你描述的方式。

要解决此问题,请执行以下操作:

  1. d分配内存;
  2. 确保编写 NUL 终止符以d .

附言将字符串文本分配给非const变量的方式在C++中不再有效。用

const char* data = "...";
^^^^^

附言既然你已经标记了问题[c++],你可能应该使用std::string而不是原始的C字符串。