假设我有一个基于Fortran的派生类型
type :: atype
integer :: n
integer :: a(10)
integer, allocatable :: b(:)
end type
我有两个这种类型的实例
type(atype) :: t1, t2
当我执行下面的赋值语句时,实际上会发生什么?
t2 = t1
我对此感兴趣,因为我想要正确地复制派生类型变量。这意味着标量分量应相等,数组分量的每个元素应相等,并且可分配数组应具有相同的分配大小和元素应相等。目前,我只会编写一个子程序,以正确地复制和分配这些分量。
subroutine copy_atype(from, to)
type(atype) :: from, to
to%n = from%n
to%a = from%a
if (allocated(to%b)) deallocate(to%b)
if (allocated(from%b) then
allocate(to%b(size(from%b)))
to%b = from%b
end if
end subroutine
我希望您能告诉我如何找到标准中适当的部分。
我正在使用gfortran 4.7。
lhs_pointer => rhs_target
. - IanH