我有两种Fortran派生的数据类型,其中一种像嵌套一样
type particle
real :: x
real :: v
end type particle
type species
real :: m
real :: q
type(particle), allocatable, dimension(:) :: p
end type species
type(species) :: sp
现在,假设我定义了另一个实数组z(1:20)
,并用species
分配了派生数据类型allocate(sp%p(1:20))
,以使z
和数组{{1}的维数}匹配。
现在声明(当然,在正确初始化之后)
p
和那个
z = sp%p%x
通过z(1:20) = sp%p(1:20)%x
编译无错误。但是,尽管前一个在运行时可以正常运行,但第二个会产生gfortran
错误。谁能指出我是否做错了明显的事情?