定义整数数组fortran

时间:2009-11-09 09:57:24

标签: arrays fortran fortran90

我是Fortran的新手。 any1告诉我如何在之前定义一个整数数组。 例如。 我想在12个月内定义一个no.of天的数组。 像...

integer,allocatable(12,1) :: days

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

这种语法是否正确?如果没有,请告诉我正确的。

由于 普利文

4 个答案:

答案 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 /)