复制c ++ char指针

时间:2013-10-30 12:42:30

标签: 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 但如果替换最后一个块 这个for循环基本上是等价的,它什么都没打印出来

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

任何人都可以解释一下有什么区别吗?

1 个答案:

答案 0 :(得分:9)

由于您尚未为d分配内存,因此这两个程序都有undefined behaviour。他们可以随心所欲地行事,包括你描述的方式。

解决此问题:

  1. d;
  2. 分配内存
  3. 确保你写了一个NUL终结符d
  4. P.S。将字符串文字分配给非const变量的方式在C ++中不再有效。使用

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

    P.P.S。由于您已标记了问题[c++],因此您应该使用std::string而不是原始C字符串。