1

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

integer,allocatable(12,1) :: days

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

这个语法正确吗?如果不是,请告诉我正确的。

谢谢普拉文

4

4 回答 4

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
于 2009-12-11T23:26:52.630 回答
1

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

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

整数,维度(:) :: a
!...
分配(一(12))
a = (/ .... /)
!...
解除分配(一)

也是一种选择。

于 2010-05-31T19:15:10.250 回答
0

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

INTEGER :: a(12) = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /)
于 2009-12-11T23:47:04.743 回答
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 /
于 2009-11-09T12:31:19.620 回答