2009-11-09 67 views
1

我是Fortran的新手。 任何一个可以告诉我如何在之前定义一个整数数组。 例如 我想在12个月内定义一个没有天数的数组。 like ...定义整型数组fortran

integer,allocatable(12,1) :: days 

days=[31,28,31,30,31,30,31,31,30,31,30,31] 

该语法正确吗?如果没有,请让我知道正确的一个。

感谢 普利文

回答

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/
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 
0

可能不需要被分配,这样做,因为它只是一个常量数组:

INTEGER :: a(12) = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /) 
1

integer, dimension(12) :: a = (/ 31, 28, 31, 30, ... /)

“静态”数组。 [ ]而不是(/ /)对于Fortran 2003和更高版本是正确的;我所知道的所有编译器都允许这种语法,即使它们没有完全实现F2003。对于动态阵列:

 
integer, dimension(:) :: a 
! ... 
allocate(a(12)) 
a = (/ .... /) 
! ... 
deallocate(a) 

也是一个选项。