我正在尝试破译一个 fortran 代码。它将指向函数的指针作为实际参数传递,而形式参数则是目标。它在主程序中定义并分配一个 globalDATA 类型的指针,然后调用一个传递该指针的函数:
module dataGLOBAL
type globalDATA
type (gl_1) , pointer :: gl1
type (gd_2) , pointer :: gd2
type (gdt_ok) , pointer :: gdtok
...
...
end type globalDATA
end module dataGLOBAL
Program main
....
....
use dataGLOBAL
...
type(globalDATA),pointer :: GD
allocate(GD)
returnvalue = INIT(GD)
....
....
end
函数内容如下:
integer function INIT(GD) result(returnvalue)
....
....
use dataGLOBAL
type(globalDATA) , target :: GD
allocate (GD%gl1)
allocate (GD%gd2)
allocate (GD%gdtok)
....
....
end function INIT
这样做有什么意义?为什么主程序中的指针和目标结构的单个组件都必须分配?谢谢。