fortran90 内部过程的返回值能否有多个?
发布网友
发布时间:2023-02-08 22:52
我来回答
共1个回答
热心网友
时间:2023-09-25 09:06
不能。
任何函数,返回值都只有一个。
有几种途径来实现你期望的多个返回值。
第一,返回一个数组,存放你的多个值。
第二,也可以返回一个结构体,Type
第三,用虚参来返回。因为 Fortran 是传地址的,而不是传值的。所以你在函数内改变虚参的值,调用者的实参也会变化。
第三,用全局变量返回。(不是很推荐)
补充:
为什么只有一个?这个问题比较难理解。
CPU里有很多寄存器,分别用于不同的功能,通常来说,32位CPU的eax寄存器用来存放返回值。
因为eax只有一个,所以返回值只有一个。
可以通过虚参来获得返回数据。正如我说的第三条那样。
虽然这样也能返回数据,但叫法不能叫“返回值”了,否则会混淆概念。
子例子程序?subroutine 和 function ?我希望从概念上,不要区分这两者。
subroutine 和 function 唯一的区别就是一个有返回值,一个没有返回值。其他完全完全一摸一样。
说白了,subroutine 就是丢弃了返回值的 function。这样说的话,这两个更是没有任何区别。
子例子程序,某些中文教材喜欢这么叫。我个人认为没多大意义。两者不必区分