繁体   English   中英

复制C ++ char指针

[英]Copying c++ char 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但如果用this for循环替换最后一个块(基本上是等效的),则不会输出任何内容

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

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

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

要解决此问题:

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

PS你分配一个字符串到非的方式const变量不再用C ++有效。 采用

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

PPS既然已经标记了[c++] ,则可能应该使用std::string而不是原始C字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM