分配派生类型的数组组件



我有以下类型的类型

 type BOPinfo
     double precision, allocatable :: realQ4(:,:), realQ6(:,:)
  end type BOPinfo

我已经能够确定当元素是真实或整数标量时,如何初始化派生类型中的元素。

但是,我无法弄清楚如何分辨BOPinfo类型的变量realQ4realQ6的大小是多少,也许如何将它们初始化为零。有任何建议吗?

也可以使用结构构造函数创建派生型值的表达式。构造函数是具有与类型相同名称的函数。

variable = BOPinfo(array1, array2)

array1array2是具有适当等级的数组。如果您希望组件为not allocated

,也可以通过null()

在Fortran 2008中,您甚至可以省略可分配的组件,它们的状态将为not allocated

分配(或指针)类型组件不能具有默认的初始化。这既适用于递延形状阵列和可分配/指针标量。可分配的组件始终具有"未分配"的初始状态。取而代

type(BOPinfo) test
integer n1, n2, m1, m2
allocate (test%realQ4(n1,m1), test%realQ6(n2,m2))
test%realQ4 = 0
test%realQ6 = 0

这与默认(或显式)初始化不同,并且也可以在结构构造函数中设置值(如另一个答案中)。

在Fortran 2003下,动态大小还有其他方法,包括参数化的派生类型(现在在最近的编译器版本中得到了广泛支持)。