我知道我们不能将一个 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/