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

发布于 2024-10-28 08:41:04 字数 576 浏览 0 评论 0原文

在一个小的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如梦亦如幻 2024-11-04 08:41:04

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

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

因此,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] and mat1[i][j] are the same int 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.

温柔嚣张 2024-11-04 08:41:04

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

arr1, arr2 and arr3 are pointers. Each pointer pointing to an array of size ARRAY_SIZE.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文