从 C 中的 3D 指针/数组调用 2D 指针/数组

标签 c arrays function pointers

对于每个时间步长,我都有一个二维矩阵 a[ix][iz]ix0 nx-1iz0nz-1

为了组装所有时间步长的矩阵,我定义了一个长度为 nx*nz*nt 的 3D 指针 ***b。在 it 时刻,矩阵可以用 b[ix][iz][it] 表示,其中 ix 不同于 0nx-1iz0nz-1

在时间循环中,我必须在 it 时间将二维数组/指针传递给函数 void func(**ptr)。因为b是一个3D指针/数组,在主代码中怎么调用呢?像 func(b[it]); 吗?

最佳答案

您可以将矩阵重组为 b[it][ix][iz] 而不是 b[ix][iz][it]。这样,您将拥有一个二维矩阵数组,允许您使用 b[it] 在任何给定时间步传递二维矩阵。

否则,如果您保持矩阵不变,则必须在 it 时构造二维数组,然后将其传递给 func() - 那是您可以通过重构 3D 矩阵来避免额外的计算。

关于从 C 中的 3D 指针/数组调用 2D 指针/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51108692/

相关文章:

c - 如何使 gtk 应用程序全屏显示以克服窗口管理器(gtk_window_fullscreen 不适用)

javascript - 动态交换 "ul li"

c - 为什么我的 C 编译器没有捕捉到这个越界错误

MySQL查询以获取每个月数据的平均值数组

Python:如何定义一个行为像函数的类?

c - 测量矩阵乘法参数的程序错误

c - Websocket 连接不断过早关闭连接

c - 二叉搜索树的中序遍历,显示一些错误

c++ - 尝试构建基于模板的代码时出错

function - 在 JavaScript 中使用特定的默认参数调用函数?