我是Fortran的新手。 任何一个可以告诉我如何在之前定义一个整数数组。 例如 我想在12个月内定义一个没有天数的数组。 like ...定义整型数组fortran
integer,allocatable(12,1) :: days
days=[31,28,31,30,31,30,31,31,30,31,30,31]
该语法正确吗?如果没有,请让我知道正确的一个。
感谢 普利文
我是Fortran的新手。 任何一个可以告诉我如何在之前定义一个整数数组。 例如 我想在12个月内定义一个没有天数的数组。 like ...定义整型数组fortran
integer,allocatable(12,1) :: days
days=[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/
如果你想有一个动态分配的数组,请尝试以下操作:
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 :: a(12) = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /)
integer, dimension(12) :: a = (/ 31, 28, 31, 30, ... /)
“静态”数组。 [ ]
而不是(/ /)
对于Fortran 2003和更高版本是正确的;我所知道的所有编译器都允许这种语法,即使它们没有完全实现F2003。对于动态阵列:
integer, dimension(:) :: a ! ... allocate(a(12)) a = (/ .... /) ! ... deallocate(a)
也是一个选项。