我有以下类型的类型
type BOPinfo
double precision, allocatable :: realQ4(:,:), realQ6(:,:)
end type BOPinfo
我已经能够确定当元素是真实或整数标量时,如何初始化派生类型中的元素。
但是,我无法弄清楚如何分辨BOPinfo
类型的变量realQ4
和realQ6
的大小是多少,也许如何将它们初始化为零。有任何建议吗?
也可以使用结构构造函数创建派生型值的表达式。构造函数是具有与类型相同名称的函数。
variable = BOPinfo(array1, array2)
array1
和array2
是具有适当等级的数组。如果您希望组件为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下,动态大小还有其他方法,包括参数化的派生类型(现在在最近的编译器版本中得到了广泛支持)。