c++ - 为什么不能像这样复制 char 数组 charArray ="some string";

标签 c++ c string

为什么我们需要使用 strcpy() 将字符串复制到 char 数组中?

我在这上面浪费了 2 个小时。它没有向我显示任何错误,但输出并不像我预期的那样,我花了 2 个小时才找出错误。

它只是显示一个垃圾字符。

当我使用 strcpy() 时,它工作正常。

最佳答案

答案的另一种解释是,char数组是一种基本类型,而不是覆盖operator =的类。

如@StianV.Svendenborg 所述,将一个 char 数组分配给另一个意味着将其地址分配给另一个 char 指针变量。

char数组分配如;

char test[4]={1,2,3,4};

将分配 4 个字节(每个用于一个 char 值)。

在算术等表达式中,test 的结果将表现得像指针。例如,test+1 将指向第二个元素的地址,而 *(test +1) == 2 将为真并且 print("%p",test) 将打印数组中第一个元素的地址。

如果您使用类 std::stringoperator=,函数将遍历所有这些分配的字段并在您不考虑的情况下复制它们。

关于c++ - 为什么不能像这样复制 char 数组 charArray ="some string";,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24712154/

相关文章:

c++ - 传递给线程后保持引用存活

c++ - 把最胖的人从重载的飞机上扔下来。

java - 用于输入验证的从 C++ 到 Java 的等效代码

c++ - N 位 x 包含 L 个 1

c - 如何在C中为文件的行分配内存?

c++ - 将字符串解析为数字或数字和百分号

string - 打破保险箱

c++ - 在c/c++中通过内存地址控制程序流

c - fork 和执行

c - 从 fgets() 输入中删除尾随换行符