【发布时间】:2014-01-30 17:54:51
【问题描述】:
我知道在初始化本地声明的变量时应该小心(reference)。
!这是错误的方式 (声明时初始化的局部变量具有隐式保存属性。)
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real :: ke = 0.0
end function kinetic_energy
!这是正确的方法
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real :: ke
ke = 0.
end function kinetic_energy
我想知道我们是否也有类似的指针。
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real, pointer :: ke => null()
end function kinetic_energy
或
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real, pointer :: ke
nullify(ke)
end function kinetic_energy
声明时无效的指针变量将被视为保存属性!
感谢您提供有用的信息。我已经读过,根据你所说的,总是初始化指向 NULL 的指针,这可能是完全错误的说法。例如,我不应该在我的子例程中初始化我的本地指针变量! (如果它们在子例程的每个入口处分配给新的大小)我是对的!!!
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
!local variables
real, dimension(:), pointer :: ke => null()
integer :: n
!
n=size(v,1)
allocate(ke(n))
!make a copy
ke=v
!do some computation ...
end function kinetic_energy
【问题讨论】:
标签: fortran fortran90 gfortran fortran95