在一个小的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?请解释一下。
谢谢!
答案 0 :(得分:1)
您可能熟悉数组衰减到指针的方式,然后该指针可以像数组一样使用(只要其实际范围已知)。
当对多维数组执行此类操作时,您将获得一个指向数组的指针,该数组的数组少一个。然后可以像多维数组一样使用该指针。
因此arr1[i][j]
和mat1[i][j]
具有相同的int
且地址相同。
请注意,由于类只复制指向2D数组的指针,因此用户需要确保这些数组参数的生命周期足够长。通过类进行的任何修改都将发生在原始数组中。
答案 1 :(得分:0)
arr1, arr2
和arr3
是指针。每个指针指向一个大小为ARRAY_SIZE
的数组。