我在模块和主程序之间传输数组时遇到问题。该模块和主程序使用gfortran编译得非常好。但是,在执行 .exe 文件时,windows 会遇到问题,必须关闭。这似乎仅在数组大小未知(并且必须分配其大小)时发生。我已经包含一小段代码来说明问题:
它是如何工作 的:用户被要求输入一个整数'i',它定义了方阵的大小。这个整数被传递给模块函数,该函数创建矩阵并将其返回给主程序。然后将矩阵打印到屏幕上。
一个文件中的主程序:
program main1
use module1
implicit none
integer :: i
real,allocatable :: a(:,:)
write(*,*)'Input the size of the square matrix'
read(*,*)i
allocate(a(i,i))
a = function1(i)
write(*,*) 'The square matrix a='
write(*,*) a
deallocate(a)
end program main1
和模块在一个单独的文件中:
module module1
contains
function function1(i)
real, allocatable,dimension(:,:) :: function1
integer :: i
allocate(function1(i,i))
function1 = 1.0
deallocate(function1)
end function function1
end module
谢谢你们的帮助!