如何用c++中另一个数组的地址初始化一个数组

How do I initialize an array with the address of another array in C++?

本文关键字:数组 一个 初始化 c++ 何用 另一个 地址      更新时间:2023-10-16

假设我有一个类Class1,它的数组声明为array1,那么在class1.h中,我有类似于

的东西
Class Class1{
public:
    int array1[2];
}

然后,在另一个类的.cpp文件中,我有

Class1* class = new Class1();
int array0[2];
array0 = class->array1;
然而,这给了我错误

invalid array assignment

如何设置数组的地址相等,以便远程修改?

不能用一个数组引用另一个数组。您必须将引用绑定到相同类型的数组,或者使用类似数组的类型,如std::array<int, 2>

数组引用:

Class1 a;
int (&array0)[2] = a.array1;  // array0 is a reference to a.array1

std::array reference:

#include <array>
class Class1{
public:
    std::array<int, 2> array1;
};
然后

Class1 a;
std::array<int, 2>& array0 = a.array1; // array0 is a reference to a.array1

这两种方法都确保通过引用可以获得数组的完整类型信息。这意味着,例如,您可以在std::beginstd::end或基于范围的for循环中使用引用。

注意class是一个关键字。你不应该用它来命名变量

如果您只需要访问相同的数组,则可以使用指针:

Class1* class = new Class1();
int *array0 = class->array1;
相关文章: