c++ - 复制 C++ 字符指针

标签 c++ pointers

我在将值复制到 char 指针时遇到了这个问题。 如果我写

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 但如果将最后一个 block 替换为 这个 for 循环基本上是等价的,它什么都不打印

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

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

最佳答案

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

解决这个问题:

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

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

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

附言由于您已将问题标记为 [c++],您可能应该使用 std::string 而不是原始 C 字符串。

关于c++ - 复制 C++ 字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682575/

相关文章:

c++ - 如何通过 QSqlTableModel 保存更改数据库?

c++ - 序列点和运算符优先级有什么区别?

c++ - setsockopt 返回 -1 : errno is set to 0

c - 堆栈溢出带有指针的C复制字符串

pointers - Go map 的通用值类型

c++ - 从动态数组中删除滞后零

c++ - C++11的CAS如何实现Valois的Queue

c++ - 可移植 ntohl 和 friend

c++ - 将指针类型作为模板参数传递

c++ - 如何通过函数内的指针操作 char* 或 char a[]?