假设有一个向量:
在这个子程序中,rho被声明为:
我曾认为模块子程序将无法访问主程序中定义的
REAL(KIND=dp), DIMENSION(maxn) :: rho
这个变量是在一个初始子程序中分配的(与dp
和maxn
一起),然后从主程序中调用。
然后,主程序调用一个包含(不同的)子程序以演化rho
的模块。对于rho
的子程序参数定义如下:
SUBROUTINE sum_density(a, b, c, ....., rho)
在这个子程序中,rho被声明为:
REAL(KIND=dp), DIMENSION(maxn), INTENT(OUT) :: rho
然而,在任何值与rho
相关联之前,代码包含以下行:
foo1= foo2*foo3(i)/rho(i)
我曾认为模块子程序将无法访问主程序中定义的
rho
,我期望编译器会抱怨并要求更改意图为 (INOUT)
或者说像 rho
未定义。即使我将其更改为 (INOUT)
,结果也没有区别。模块子程序必须访问主程序中的 rho
值并使用它,即使意图声明为 OUT
。
我的问题是——在这种情况下,使用 INTENT(OUT)
和 INTENT(INOUT)
有什么区别?
INTENT(IN)
吗? - Vladimir F Героям слава