4
有人可以解释为什么下面的程序不工作,以及如何使它工作? 在主程序中我分配一个指针,在子程序sub
中查找数组的形状并得到错误的值。阵列和指针形状
program test
real, pointer, dimension(:,:,:) :: arr
allocate(arr(3,5,7))
print *, "In test: ",shape(arr)
call sub(arr)
print *, "Back in test: ",shape(arr)
end program test
subroutine sub(arr)
real, pointer, dimension(:,:,:) :: arr
print *, "In sub: ",shape(arr)
end subroutine
输出:
In test: 3 5 7
In sub: 12694064 1 3
Back in test: 3 5 7
感谢
PS:我使用gfortran(GCC 4.4.3)
编辑:与gfortran 4.6,该代码根本不编译。我得到的错误:
Dummy argument 'arr' of procedure 'sub' at (1) has an attribute that requires an explicit interface for this procedure