I know that when initializing a locally declared variable you need to be careful ( link ).
! THIS IS A WRONG PATH (The local variable that is initialized upon declaration has an implicit save attribute.)
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real :: ke = 0.0
end function kinetic_energy
! THIS IS THE RIGHT WAY
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real :: ke
ke = 0.
end function kinetic_energy
I am wondering if we have something similar for pointers or not.
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real, pointer :: ke => null()
end function kinetic_energy
or
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real, pointer :: ke
nullify(ke)
end function kinetic_energy
A pointer variable that is declared with a null value is considered a save attribute!
. , NULL, , , . , - ! ( ) !
real function kinetic_energy(v)
real, dimension(:), intent(in) :: v
real, dimension(:), pointer :: ke => null()
integer :: n
n=size(v,1)
allocate(ke(n))
ke=v
end function kinetic_energy