c++ - 将 char 数组分配给另一个 char 数组

标签 c++ c arrays

我知道我们不能将一个 char 数组分配给另一个 char 数组,例如:

 char array1[] = "Hello";
 char array2[] = "Hi!";

 array1 = array2;//does not compile

但是:

 char array1[] = "Hello";
 char *array2 = NULL;

 array2 = array1; //compile

 printf("%s", array2); //display Hello

这有效。

谁能解释一下为什么?

谢谢!

最佳答案

普通数组不可赋值。这就是第一个代码示例不起作用的原因。

在第二个示例中,array2 只是一个指针,而 array1 尽管是一个数组,但可以衰减到指向它的指针在某些情况下的第一个元素。这是这里发生的事情:

array2 = array1;

这次赋值后,指针array2指向数组array1的第一个元素。没有数组赋值,而是指针赋值。

关于c++ - 将 char 数组分配给另一个 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25005529/

相关文章:

c++ - 使用 X11、XDamage、XRender 和其他技巧保留屏幕内容的 QPixmap 拷贝

c++ - 设置获取指针

c - erl_interface 链接器错误

c - 检测进程中的内存碎片问题

c++ - 为什么从 std::string 的初始化列表中填充 std::vector 不调用 std::string 构造函数

c++ - 如何在 C++ 中故意跳过 cin?

c - 了解 glibc

javascript - 在 javascript/node.js 中迭代对象数组的有效方法

python - 在 numpy 中广播

arrays - Bash 脚本中的 Unshift 数组元素