将值复制到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];
}
任何人都可以解释一下有什么区别吗?
答案 0 :(得分:9)
由于您尚未为d
分配内存,因此这两个程序都有undefined behaviour。他们可以随心所欲地行事,包括你描述的方式。
解决此问题:
d
; d
。 P.S。将字符串文字分配给非const
变量的方式在C ++中不再有效。使用
const char* data = "...";
^^^^^
P.P.S。由于您已标记了问题[c++]
,因此您应该使用std::string
而不是原始C字符串。