Fortran指向派生类型和默认初始化的指针

时间:2016-02-11 14:27:09

标签: initialization fortran dynamic-allocation derived-types

Fortran 2003派生类型具有默认初始化的一个很好的功能。

type TTest
  integer :: a
  integer :: b = 1
  integer, pointer :: p1, p2 => null()
end type TTest

然后任何类型(TTest)的声明变量默认都会初始化组件b和p2。

请考虑以下代码:

type (TTest), dimension(:), pointer     :: varptr
type (TTest), dimension(:), allocatable :: varalloc
integer, parameter :: ndim = 1000

allocate(  varptr(ndim))
allocate(varalloc(ndim))

可以保证varptr和varalloc的所有元素在分配后都会有初始化的b和p2成员吗?

1 个答案:

答案 0 :(得分:1)

是的,标准要求。只要你有一个派生类型的变量,它就会初始化那些组件。

  

F2008 4.5.4.6.3:如果指针组件出现 null-init ,那就是   任何类型的对象中的组件具有初始关联   分离的状态(1.3)或按照规定解除关联   16.5.2.4。

     

F2008 4.5.4.6.6:如果非指针组件出现 constant-expr ,则该组件在    类型的任何对象最初定义(16.6.3)或定义为16.6.5中指定的值,其值由    constant-expr ...