多维数组的 Fortran 子数组

Fortran sub arrays for multidimensional arrays

这可能很简单,

如果我在 Fortran 90 中有一个 3D 数组

REAL A(2,2,2)

如果我将此数组传递给函数

call function(A(:,1,:))

等效的二维数组会是什么样子?

是吗

A(1,1,1) A(1,1,2)

A(2,1,1) A(2,1,2)

我认为您已经将 A 的正确切片写为矩阵,但为了清楚起见:

让我们用伪参数 mat 又名

定义一个函数 f
function f(mat)
  real :: mat(2,2)
  ...
end function

然后 f(A(:,1,:)) 这样的调用会产生 mat 如下

mat(1,1) = A(1,1,1)
mat(2,1) = A(2,1,1)
mat(1,2) = A(1,1,2)
mat(2,2) = A(2,1,2)