C++ 两个数组指向相同的信息

C++ 两个数组指向相同的信息,c++,arrays,pointers,C++,Arrays,Pointers,我有两个数组 在第二个数组中进行一些更改后,我希望 第一个数组与第二个数组相同, 是否可以不逐个复制整个数组元素 但不知何故,通过一个命令使第一个数组指向 第二个数组 否,数组是一个对象,对象上是某个存储区域。两个阵列是两个独立的存储区域 但是,如果给定一个指向数组第一个元素的指针,则可以使用该指针对数组进行索引,就像对数组本身进行索引一样: int arr[] = {1, 2, 3, 4, 5}; int* p = arr; arr[2] == p[2]; 然而,我不想助长数组和指针在任何方

我有两个数组
在第二个数组中进行一些更改后,我希望 第一个数组与第二个数组相同,
是否可以不逐个复制整个数组元素
但不知何故,通过一个命令使第一个数组指向

第二个数组

否,数组是一个对象,对象上是某个存储区域。两个阵列是两个独立的存储区域

但是,如果给定一个指向数组第一个元素的指针,则可以使用该指针对数组进行索引,就像对数组本身进行索引一样:

int arr[] = {1, 2, 3, 4, 5};
int* p = arr;
arr[2] == p[2];
然而,我不想助长数组和指针在任何方面都相似的误解。第一行定义了一个数组对象,其中包含5
int
s。第二行定义了指向该数组中第一个元素的指针

它们可以在最后一行中以相同的方式使用的原因是,数组的名称,
arr
,在进行索引之前隐式转换为指向其第一个元素的指针。所以这两个子表达式实际上是一样的
arr[2]
只涉及在应用索引运算符之前对指针的隐式转换

或者,您可以引用数组:

int arr[] = {1, 2, 3, 4, 5};
int (&r)[5] = arr;
arr[2] == r[2];

现在
r
只是数组的别名。
arr
r
实际上都是指数组对象。

如果您想一次复制一个元素,一个简单的
for
循环就可以了。如果要复制所有元素,可以使用,例如
memcpy
(如果且仅如果阵列具有POD类型)

当然还有:


点击此链接:你需要的是一个如图所示的浅显副本,使用两个指针。这是一首诗吗?@LightnessRacesinOrbit反复阅读了几遍,你可能是对的。
int array1[5] = { ... };
int array2[5];

// Copy from `array1` to `array2`
std::copy(std::begin(array1), std::end(array1), std::begin(array2));