二维数组的初始化如何工作?

时间:2011-03-29 12:21:30

标签: c++ multidimensional-array initialization-list

在一个小的C ++示例中遇到了下面显示的代码:

int (*arr1)[ARRAY_SIZE];
int (*arr2)[ARRAY_SIZE];
int (*arr3)[ARRAY_SIZE];

然后在类的构造函数中:

ParallelMultiply::ParallelMultiply(int mat1[ARRAY_SIZE][ARRAY_SIZE],

                   int mat2[ARRAY_SIZE][ARRAY_SIZE], 

                   int result_mat[ARRAY_SIZE][ARRAY_SIZE]):arr1(mat1), 

                   arr2(mat2), 

                   arr3(result_mat)
{

}

这里,ParallelMultiply是类,mat1,mat2,result_mat是2-D数组,ARRAY_SIZE是定义的数组长度。但是如何用二维数组初始化arr1,arr2和arr3?请解释一下。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可能熟悉数组衰减到指针的方式,然后该指针可以像数组一样使用(只要其实际范围已知)。

当对多维数组执行此类操作时,您将获得一个指向数组的指针,该数组的数组少一个。然后可以像多维数组一样使用该指针。

因此arr1[i][j]mat1[i][j]具有相同的int且地址相同。

请注意,由于类只复制指向2D数组的指针,因此用户需要确保这些数组参数的生命周期足够长。通过类进行的任何修改都将发生在原始数组中。

答案 1 :(得分:0)

arr1, arr2arr3是指针。每个指针指向一个大小为ARRAY_SIZE的数组。