在模块中声明的整数变量被用作一个全局变量以限定在节目相关的阵列的大小。程序的大小不同,所以数组的大小是一个变量,但不是一个参数。这是在节目开始时确定的。模块或主程序阵列必须具有恒定的形状误差用Fortran
在下面的代码段中,n
是全球大小可变。它在模块中声明并在主函数/程序的开始处定义。主程序中n
的相似用法和主程序中包含的子程序分别初始化一个数组。但是,主程序中的初始化错误:模块或主程序数组必须具有恒定的形状误差,但子程序中的初始化工作。在不同位置使用非恒定值的不同处理背后的机制是什么?
module mod
implicit none
integer :: n
end module mod
program main
use mod
implicit none
integer :: b(n)
n = 5
b(:) = 1
print*, b(:)
call sub
contains
subroutine sub
integer :: a(n)
a = 10
print*, a
end subroutine sub
end program main
n的值是整数的声明:: B(N)的那一刻未知的,所以你应该使用这样的:整数,指针:B(:); n = 5;分配(b)或整数,参数:: nn = 5; integer :: a(nn); n = nn – albert