如果我声明了两个数组(arr1arr2),例如,分别键入大小为10的int,并初始化了第一个数组,那么我希望在arr1中创建一个arr2的副本;为什么我不能只给出arr2 = arr1指令?

我知道可以分配两个相同类型的结构。为什么数组不是这种情况?

最佳答案

数组的问题在于,在所有表达式中(传递给sizeof和一元&运算符时除外),它们都将转换为指向其第一个元素的指针。

因此,假设您有:

int arr1[10];
int arr2[10];
...

然后,如果你写类似
arr1 = arr2;

您实际上是在尝试这样做:
arr1 = &arr2[0];

或这个:
&arr1[0] = &arr2[0];

在这两种情况下,都存在阻止代码编译的问题。在前一种情况下,您尝试在两个不兼容的类型(数组vs指针)之间进行分配,而在后一种情况下,您尝试修改常量指针(&arr1[0])。

关于c - 为什么不能分配相同类型和大小的数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14826952/

10-13 04:11