我可以使用Fortran创建没有变量分配的数组吗?

时间:2018-10-19 02:18:23

标签: fortran

我想创建一个NxN数组,其大小是我输入的N个值的数量。

您能否创建一个具有我输入数字大小的数组,而不是与现有的Fortran变量声明real * 8 Matrix(100,100)不同?

1 个答案:

答案 0 :(得分:2)

这就是可分配数组的用途。

program allocate_test
    use iso_fortran_env, only: real64
    implicit none
    real(kind=real64), allocatable :: Matrix(:,:)
    integer :: N

    print *, "Enter size of square array: "
    read(*, *) N
    allocate(Matrix(N, N))
    ! Now you have an NxN Matrix.
    deallocate(Matrix)
    ! Now you can select a new size of the Matix
end program allocate_test

几件事:

  1. real*8不是标准的Fortran。我已经介绍了一种与Fortran 2008(或更高版本)兼容的编译器一起使用的方法。对Fortran 90/95使用内在函数selected_real_kind

  2. 您可以使用它创建不同长度的数组,但是不能更改此东西的等级(尺寸)。例如,在我上面的代码中,allocate(Matrix(N, N, N))不起作用。