Pat*_*nan 0 arrays fortran multidimensional-array fortran90
如果我知道传递给函数或子例程的数组的等级和/或大小,是否有任何理由使用假定形状或假定大小的数组?例如,如果我可以替换
function f(a,m,n)
real,dimension(*),intent(inout) :: a
! ...
end function
Run Code Online (Sandbox Code Playgroud)
同
function f(a,m,n)
real,dimension(m,n),intent(inout) :: a
! ...
end function
Run Code Online (Sandbox Code Playgroud)
是否有任何理由(在Fortran 90或更高版本中)不这样做?
评论太久了,答案不是很多......
这个
function f(a,m,n)
real,dimension(m,n),intent(inout) :: a
! ...
end function
Run Code Online (Sandbox Code Playgroud)
它不是a一个假定形状的数组,它有明确的形状(m,n).这几天我写
function f(a)
real,dimension(:,:),intent(inout) :: a
! ...
end function
Run Code Online (Sandbox Code Playgroud)
在这个版本a肯定是假设形状.在(越来越)罕见的情况下,我需要在一个过程中的数组的大小或形状,我通过写shape(a)或类似的方式得到它.
最后,要回答OP的问题,请参考假设大小数组:冒号与星号 - DIMENSION(:) arr与arr(*)