the document about intent
attribute说
如果实际参数是带有向量下标的数组部分,则不能将其与已定义或重新定义的虚拟数组关联(具有OUT或INOUT的意图)。
我应该如何理解说明?
这是否意味着以下代码是错误的?
subroutine sub(a)
real, intent(out) :: a(:)
end subroutine sub
real :: arr(3,4)
call sub(arr(1,:))
答案 0 :(得分:1)
那很好,它是一个数组节而不是向量下标。后者是您在下标中使用一阶整数数组表达式的地方。扩展您的示例:
subroutine sub(a)
real, intent(out) :: a(:)
end subroutine sub
real :: arr(3,4)
call sub(arr(1,:)) ! Legal
call sub(arr(1,[ 1, 2, 4 ] ) ! Illegal