[英]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
分配内存,因此这两个程序都具有未定义的行为 。 他们可以自由地以自己喜欢的任何方式行事,包括您描述的方式。
要解决此问题:
d
分配内存; d
写入NUL终止符。 PS你分配一个字符串到非的方式const
变量不再用C ++有效。 采用
const char* data = "...";
^^^^^
PPS既然已经标记了[c++]
,则可能应该使用std::string
而不是原始C字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.