我想创建一个NxN数组,其大小是我输入的N个值的数量。
您能否创建一个具有我输入数字大小的数组,而不是与现有的Fortran变量声明real * 8 Matrix(100,100)不同?
答案 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
几件事:
real*8
不是标准的Fortran。我已经介绍了一种与Fortran 2008(或更高版本)兼容的编译器一起使用的方法。对Fortran 90/95使用内在函数selected_real_kind
您可以使用它创建不同长度的数组,但是不能更改此东西的等级(尺寸)。例如,在我上面的代码中,allocate(Matrix(N, N, N))
不起作用。