在Fortran中使用可分配语句的好处

问题描述 投票:-2回答:1

以下两个语句之间有什么区别:

REAL, DIMENSION(:) :: A

REAL, DIMENSION(:), ALLOCATABLE :: A

两者都会让程序知道A是一维实数数组。但是,完全添加语句allocatable有什么好处?

memory-management fortran
1个回答
0
投票

您的问题本身还不清楚,但是从注释中我得出的结论是,您只是在谈论虚拟参数声明。在这种情况下,可分配属性将允许子例程分配和取消分配数组。

因此,您可能会有类似的内容:

subroutine init(a)
   real, allocatable :: a(:)

   if (allocated(a)) deallocate(a)
   allocate(a(123))
end subroutine init

没有可分配的属性,传递的数组的大小是固定的。在大多数情况下,您可能只想访问传递的数组的内容,因此,不需要在哑参数声明中使用allocatable属性。

© www.soinside.com 2019 - 2024. All rights reserved.