基本表示法
可以使用 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)
。
內部函式 ubound
和 lbound
可以訪問 2(或更多)維度的下限和上限。事實上,lbound(geese,2)
將返回 -3
,而 ubound(geese,1)
將返回 12
。
內部函式 size
可以訪問陣列的大小。例如,size(geese, dim = 1)
返回第一個維度的大小,即 6。