
有两个选择:
定义为 External 函数名
使用 interface 书写该参数的完整接口
记错了,抱歉!!
是不是这个样子,主程序,和子程序的数组不是一一对应的关系,有点错位
其实数据已经改变了
program test
integer v(1:20)
integer i
do 10 i=1,20
10 v(i)=1
print ,v(10)
call f(v)
print ,v(10)
end program
subroutine f(v)
integer v(0:10)
v(10)=10
end subroutine
1参数传送的是数组的指针吗?
传递的是值。
2调用子程序时,参数能与子程序参数的名字一样吗?
不要求名字相同。
3如果加上double precision : : x , y , z 会不会提示错误呢?
可能不会提示,不过没有必要。
在子程序中X是实型变量,调用的时候也要用实型的。
所以用J(30)正确,用J(3)出现错误。
但是在主程序中写:
X=3
!
X是实型变量
Z
=
J(X)
则不会出现错误。
program Main
Implicit None
Real r,f
r=15 !这个值是你给的半径
f=40/3031416(r3)
print,f !这是值的输出
End Program Main
1函数可用于表达式中,而subroutine不可以;
2subroutine类似于c/c++中的没有返回值即void函数。
3比如有以下函数function Fun(bbb) result(aaa)
然后调用ccc= Fun(bbb)
function要把结果aaa拷贝然后复制到aaa,而subroutine不用拷贝复制,所以subroutine比function速度更快,更省内存。
以上就是关于在Fortran中,一个主程序内定义的不同子函数的形参可否同名全部的内容,包括:在Fortran中,一个主程序内定义的不同子函数的形参可否同名、FORTRAN程序子程序的值都是对的,但是返回主程序后值和初始值一样没变化,、【Fortran语言 主程序调用子程序时参数问题】等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)