【发布时间】:2020-07-04 19:08:39
【问题描述】:
class Class
{
public:
Class(array[3][3]) //the constructor
{
this->array = array
}
array[3][3];
};
int main()
{
array[3][3] = {...initialization...};
Class object(array[3][3]);
}
我想制作一个对象,它使用二维数组并对其进行修改。我知道 C 数组只是指向地址的指针,但是无论我写多少 *、& 或 [],我都无法在构造函数中传递它。
我能想到的最聪明的事情是在类中创建一个 POINTERS 数组,并通过 for 循环将每个指针分配给原始数组元素的地址,但是每次我想修改或读取main中的数组,我必须写例如*array[2][1] = 3。
有什么聪明的办法吗?
【问题讨论】:
-
您的错误是没有将数组传递给构造函数,您的错误是认为您可以使用
=复制数组。无论你多么努力,这都行不通。编写一个循环,或者使用std::copy或memcpy。 -
BTW 数组是数组,指针是指针。说 C 数组是指针是不正确的。 C 数组将转换为指针,但这根本不是一回事。
-
是的。 Arrays 数组是 1970 年代问题的优雅解决方案。您希望能够用它们做很多事情,但您不能仅仅因为在 1970 年代在几乎没有内存且 CPU 时钟频率为 kHz 的计算机上做这件事会非常非常愚蠢.
-
我不认为建议的副本是好的。虽然他们没有意识到 OP 的问题是复制数组,而不是将其传递给构造函数。
-
可能我的问题没有正确提出。我想在对象中分配我的数组的指针,指向主函数中的数组,但我得到一个错误。我不想要任何复制或 for 循环或任何东西。我只想要一个知道它指向一个大小为 [3][3] 的数组的指针,并将其分配给另一个指针指向的地址...
标签: c++ arrays pointers reference