在Fortran 95中按值传递参数

时间:2016-08-09 10:41:21

标签: fortran parameter-passing fortran95

在调用函数参数时如何保留函数参数的值,而不创建新变量?这是,我如何通过值传递参数?

在此示例代码中:

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。

1 个答案:

答案 0 :(得分:3)

在Fortran 95中没有办法。除了一些非标准的扩展,但它们不是Fortran 95,也不是任何其他Fortran,只是扩展。

在Fortran 2003中使用value属性。

function f(x,y,z) result(h)

integer, value :: x,y,z

该属性需要显式接口,但您的示例包含它,因此可以。