我是 Fortran 的新手。any1 可以告诉我如何在之前定义一个整数数组。例如,我想定义一个 12 个月内没有天数的数组。喜欢...
integer,allocatable(12,1) :: days
days=[31,28,31,30,31,30,31,31,30,31,30,31]
这个语法正确吗?如果不是,请告诉我正确的。
谢谢普拉文
如果您想要一个动态分配的数组,请尝试以下操作:
program arraytest
implicit none
integer, allocatable :: a(:)
allocate(a(12))
a = (/31,28,31,30,31,30,31,31,30,31,30,31/)
print *, a
end program arraytest
integer, dimension(12) :: a = (/ 31, 28, 31, 30, ... /)
对于“静态”数组。而[ ]
不是(/ /)
对于 Fortran 2003 及更高版本是正确的;我知道的所有编译器都允许这种语法,即使它们没有完全实现 F2003。对于动态数组:
整数,维度(:) :: a !... 分配(一(12)) a = (/ .... /) !... 解除分配(一)
也是一种选择。
可能不需要可分配,是吗,因为它只是一个常量数组:
INTEGER :: a(12) = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /)
在 FORTRAN 77 中,我会说
INTEGER DAYS(12) / 31,28,31,30,31,30,31,31,30,31,30,31 /
这就是声明和初始化合二为一。
如果需要,还可以将两者分开:
INTEGER DAYS(12)
DATA DAYS / 31,28,31,30,31,30,31,31,30,31,30,31 /