gpt4 book ai didi

fortran - Fortran 函数中的别名

转载 作者:行者123 更新时间:2023-12-04 06:05:15 36 4
gpt4 key购买 nike

出于优化原因,Fortran 强制子例程或函数的虚拟参数不是别名,即它们不指向相同的内存位置。

我想知道相同的约束是否适用于函数的返回值。
换句话说,对于给定的 myfunc 函数:

function myfunc(a)
real, intent(in) :: a(:)
real :: myfunc(size(a))
myfunc = a * 2
end function myfunc

编写是否符合标准:
a = myfunc(a)

b = myfunc(a) ?

最佳答案

函数的参数和函数返回值是不同的东西。与之前的答案相反,函数参数是通过引用或通过拷入拷出传递的,除非它们被声明为带有 VALUE 的虚拟参数。属性。这是 Fortran 与 C 的主要区别。

但是,如果函数值是通过正常赋值 (=) 而不是通过指针赋值 (=>) 构造的,则它们是单独的实体。在您的代码中,myfunc 的值是通过复制 a 的值获得的。因此,a = myfunc(a) 没有违反任何标准规则。或 b = myfunc(a) .

关于fortran - Fortran 函数中的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438260/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com