我正在使用用数组类型声明的Fortran函数。问题是编译器不保留数组的边界,例如,我声明了
function normalize(vector)
real,dimension(0:)::vector
real,dimension(0:size(vector)-1)::normalize
real scale
integer dim
scale=norm_real(vector)
if (scale/=0) then
do dim=0,size(vector)-1
normalize(dim)=vector/scale
end do
end if
write(*,*) Lbound(normalize,1)
end function normalize
...
real, dimension(:), allocatable :: B
B = normalize(vector)
write(*,*) Lbound(B,1)
在这种情况下,我验证函数的Lbound是规范化的,它是0,但是它在Lader In主程序中或在另一侧是1。 那么我怎样才能保留它的Lbound?
答案 0 :(得分:1)
我不认为你可以,但另一方面,这没关系。 Fortran认为数组形状是更基本的属性。即使函数返回的lbound变为1,也可以将其分配给lbound为0的数组或任何其他值。你有一个重要的案例吗?