我是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)
也是一個選項。