fortran:如何将空指针传递给子例程,在子例程中定义并返回空指针



我想要一个小的子例程来复制已经分配/定义的指针。我有以下测试代码:

implicit none
real ,pointer :: x(:),y(:)
real,target:: px
px=2.02
allocate(x(10))
x=20.0
call copy_1dptr(x,y)  !code aborting
write(6,*)'size x is ',size(x)
write(6,*)'y is ',y
end
subroutine copy_1dptr(x,y) 
real,pointer:: x(:),y(:)
allocate(y(size(x)))
y=x
end subroutine copy_1dptr

然而,(使用ifort),当我运行它时,我总是收到中止错误,消息说:

forrtl:severe(408):fort:(7):尝试使用指针Y与目标无关

看起来,空指针不能像我试图做的那样用作实际的伪指针。这是真的吗?有什么解决办法吗。

指针参数需要显式接口。将子程序放入模块中或使其内部:

contains
  subroutine copy_1dptr(x,y) 
  end subroutine
end program

最新更新