以下两个语句之间有什么区别:
REAL, DIMENSION(:) :: A
和
REAL, DIMENSION(:), ALLOCATABLE :: A
。
两者都会让程序知道A
是一维实数数组。但是,完全添加语句allocatable
有什么好处?
您的问题本身还不清楚,但是从注释中我得出的结论是,您只是在谈论虚拟参数声明。在这种情况下,可分配属性将允许子例程分配和取消分配数组。
因此,您可能会有类似的内容:
subroutine init(a)
real, allocatable :: a(:)
if (allocated(a)) deallocate(a)
allocate(a(123))
end subroutine init
没有可分配的属性,传递的数组的大小是固定的。在大多数情况下,您可能只想访问传递的数组的内容,因此,不需要在哑参数声明中使用allocatable属性。