Fortran虚拟参数的意图
示例
intent子例程或函数中的伪参数的属性声明其预期用途。语法是以下之一
intent(IN) intent(OUT) intent(INOUT)
例如,考虑以下功能:
real function f(x) real, intent(IN) :: x f = x*x end function
在intent(IN)该(非指针)伪参数指定x可能永远不会被限定或在整个函数或它的初始化变得不确定。如果指针虚拟参数具有属性intent(IN),则适用于其关联。
intent(OUT)对于非指针,哑元参数意味着哑元参数在子程序调用时变为未定义状态(带有默认初始化的派生类型的任何组件除外),并将在执行期间进行设置。作为伪参数传递的实际参数必须是可定义的:不允许传递命名常量或文字常量或表达式。
与之前类似,如果指针虚拟参数是指针intent(OUT)的关联状态将变为未定义。这里的实际参数必须是一个指针变量。
intent(INOUT)指定实际参数是可定义的,并且适合于从过程中传入和返回数据。
最后,虚拟参数可能没有该intent属性。这种伪参数的使用受到传递的实际参数的限制。
例如,考虑
integer :: i = 0 call sub(i, .TRUE.) call sub(1, .FALSE.) end subroutine sub(i, update) integer i logical, intent(in) :: update if (update) i = i+1 end subroutine
该参数i不能具有intent允许主程序的两个子例程调用的属性。