在调用函数参数时如何保留函数参数的值,而不创建新变量?这是,我如何通过值传递参数?
在此示例代码中:
program what
integer :: a,b,c,d
a=1
b=2
c=3
print *, a,b,c
d=f(val(a),val(b),val(c))
print *, d
print *, a,b,c
d=f(a,b,c)
print *, d
contains
function f(x,y,z) result(h)
integer:: x,y,z
integer :: h
h=x+y+z
x=0
y=0
z=0
end function
end program
当我第二次调用该函数时,它只打印0。
答案 0 :(得分:3)
在Fortran 95中没有办法。除了一些非标准的扩展,但它们不是Fortran 95,也不是任何其他Fortran,只是扩展。
在Fortran 2003中使用value
属性。
function f(x,y,z) result(h)
integer, value :: x,y,z
该属性需要显式接口,但您的示例包含它,因此可以。