2009-11-09 82 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) 

也是一個選項。