复制 c++ 字符指针
Copying c++ char pointers
将值复制到字符指针时遇到此问题。如果我写
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
分配内存; - 确保编写 NUL 终止符以
d
.
附言将字符串文本分配给非const
变量的方式在C++中不再有效。用
const char* data = "...";
^^^^^
附言既然你已经标记了问题[c++]
,你可能应该使用std::string
而不是原始的C字符串。
相关文章:
- 指向指向字符数组的指针数组的指针
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将字符缓冲区强制转换为函数指针
- 在函数中返回无符号字符数组,但不返回指针
- 将字符逐个分配给指针?
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将字符数组复制到 QByte 数组中,而无需传递指针
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- C++指针数组到字符数组中的特定位置
- 如何从链表指针字符中查找字符
- 获取字符数组地址,然后转换为指针字符
- 在指针字符 c++ 中分配字符数组的值
- C 指针字符
- 将向量传递<char>到指针字符*
- 如何修复未对齐的指针(字符**)
- 如何打印指针字符数组
- 指针 *字符和 &字符
- C++指针字符
- C/ c++:从指针字符一维数组中访问单个字符