基本表示法

可以使用 dimension 属性或直接指示数组的 dimension(s)将任何类型声明为数组:

! One dimensional array with 4 elements
integer, dimension(4) :: foo

! Two dimensional array with 4 rows and 2 columns
real, dimension(4, 2) :: bar

! Three dimensional array
type(mytype), dimension(6, 7, 8) :: myarray

! Same as above without using the dimension keyword
integer::foo2(4)
real::bar2(4, 2)
type(mytype) :: myarray2(6, 7, 8)

后一种声明多维数组的方法允许在一行中声明相同类型的不同级别/维度数组,如下所示

real::pencil(5), plate(3,-2:4), cuboid(0:3,-10:5,6)

Fortran 2008 标准允许的最大等级(维度数)为 15,之前为 7。

Fortran 按列主要顺序存储数组。也就是说,bar 的元素存储在内存中,如下所示:

bar(1, 1), bar(2, 1), bar(3, 1), bar(4, 1), bar(1, 2), bar(2, 2), ...

在 Fortran 中,默认情况下,数组编号从 1 开始,而 C 从 0 开始。事实上,在 Fortran 中,你可以明确指定每个维度的上限和下限:

integer, dimension(7:12, -3:-1) :: geese

这声明了一个形状 (6, 3) 的数组,其第一个元素是 geese(7, -3)

内部函数 uboundlbound 可以访问 2(或更多)维度的下限和上限。事实上,lbound(geese,2) 将返回 -3,而 ubound(geese,1) 将返回 12

内部函数 size 可以访问数组的大小。例如,size(geese, dim = 1) 返回第一个维度的大小,即 6。