二维数组的初始化是如何工作的?
在一个小的 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 是二维数组,ARRAY_SIZE 是定义的数组长度。但是如何用二维数组初始化arr1、arr2和arr3呢?请解释一下。
谢谢你!!
came across the code shown below in a small C++ example:
int (*arr1)[ARRAY_SIZE];
int (*arr2)[ARRAY_SIZE];
int (*arr3)[ARRAY_SIZE];
then in the constructor of the class:
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)
{
}
here, ParallelMultiply is the class, mat1, mat2, result_mat are 2-D arrays, and ARRAY_SIZE is the defined array length. But How can arr1, arr2 and arr3 can be initialized with two dimensional arrays?? Please explain.
Thank you!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能熟悉数组衰减为指针的方式,然后可以像数组一样使用该指针(只要知道其实际范围)。
当对多维数组执行此类操作时,您将获得一个指向数组的指针,其中数组绑定少一个。然后该指针可以像多维数组一样使用。
因此,
arr1[i][j]
和mat1[i][j]
是相同的int
并且具有相同的地址。请注意,由于该类仅复制指向二维数组的指针,因此用户需要确保这些数组参数的生命周期足够长。通过该类所做的任何修改都会发生在原始数组上。
You may be familiar with the way an array can decay to a pointer and then that pointer can be used like an array (as long as its actual extent is known).
When this sort of thing is done to a multidimensional array, you get a pointer to array with one less array bound. Then that pointer can be used like the multidimensional array.
So
arr1[i][j]
andmat1[i][j]
are the sameint
and have the same address.Note that since the class is copying only pointers to the 2D arrays, the user needs to make sure the lifetime of those array arguments is long enough. And any modifications made through the class will happen to the original arrays.
arr1、arr2
和arr3
是指针。每个指针都指向一个大小为ARRAY_SIZE
的数组。arr1, arr2
andarr3
are pointers. Each pointer pointing to an array of sizeARRAY_SIZE
.