声明向量而不指定其维度

Rob*_*t H 0 arrays fortran

现代Fortran中的语法是什么语句声明一个数组而不给出它的长度并让编译器确定声明的长度?

下面的例子工作:

program ONE
  real :: V = [1,2,3]
end program

program ONE
  real :: V(*) = [1,2,3]
end program
Run Code Online (Sandbox Code Playgroud)

但这个例子确实有效:

program ONE
  real :: V(3) = [1,2,3]
end program
Run Code Online (Sandbox Code Playgroud)

为什么编译器不能从声明中计算所需的长度?有没有办法做到这一点?

M. *_* B. 5

您可以执行以下操作,这需要两行,声明和可执行语句:

program ONE
  real, dimension (:), allocatable :: V
  V =  [1,2,3]
end program
Run Code Online (Sandbox Code Playgroud)

这使得Fortran 2003在分配时重新分配的功能.

  • 正确.但是,您可以使用指针使不同等级的数组成为同一目标.这仍然需要使用所需的等级声明指针.请参阅http://stackoverflow.com/questions/5406016/changing-array-dimensions-in-fortran (2认同)