我是Fortran的新手。 any1告诉我如何在之前定义一个整数数组。 例如。 我想在12个月内定义一个no.of天的数组。 像...
integer,allocatable(12,1) :: days
days=[31,28,31,30,31,30,31,31,30,31,30,31]
这种语法是否正确?如果没有,请告诉我正确的。
由于 普利文
答案 0 :(得分:2)
如果需要动态分配的数组,请尝试以下操作:
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
答案 1 :(得分:1)
integer, dimension(12) :: a = (/ 31, 28, 31, 30, ... /)
表示“静态”数组。对于Fortran 2003及更高版本,[ ]
而不是(/ /)
是正确的;我所知道的所有编译器都允许这种语法,即使它们没有完全实现F2003。对于动态数组:
integer, dimension(:) :: a ! ... allocate(a(12)) a = (/ .... /) ! ... deallocate(a)
也是一种选择。
答案 2 :(得分:0)
在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 /
答案 3 :(得分:0)
可能不需要可分配,是吗,因为它只是一个常量数组:
INTEGER :: a(12) = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /)