Fortran 二维数组变量

2023-12-29 15:32 更新

当然,除了一维数组,我们也可能会想在主程序中传递二维数组给子程序,但是 ​a(*, *)​ 的写法在 Fortran 中是不支持的。因此,我们需要把二维数组的维度也传递给子程序。

如下示例 7 所示,数组 a 和 b 为二维数组,m 和 n 是它们的维度。子程序中使用数组变量名和给定的维度定义出二维数组。示例 7 的主程序定义了四个二维数组及它们的维度大小,调用子程序时不仅传递了数组本身,也传递了维度大小。而子程序采用了两个 for 循环叠加的方式来交替给二维数组中的每一行每一列的元素赋值。

!!! 示例 7
program stest1
implicit none
real a(10, 20), b(10, 20), c(100, 200), d(100, 200)
......
call copy2d(a, b, 10, 20)
call copy2d(c, d, 100, 200)
end program stest1

subroutine copy2d(a, b, m, n)
implicit none
real a(m, n), b(m, n)
integer m, n, i, j
do j = i, n
do i = i, m
b(i, j) = a(i, j)
enddo
enddo
end subroutine copy2d

数组 a(m, n) 的定义表示数组的行号是从 1 到 m、列号是从 1 到 n。如果想要行号和列号从 0 开始,则应该将数组定义为 a(0:m-1, 0:n-1)。一维数组时可以定义为 a(0:*)。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号