回 帖 发 新 帖 刷新版面

主题:[讨论]两种传递方式应该采用哪种?

一种: 
program main 
use mod1 
对a1,a2...b1,b2...声明 
... 

call sub1(a1,a2,.....) !参数很多,每个参数是大的二维甚至三维数组 
call sub1(b1,b2,.....) 
... 
end program 
module mod1 
... 
subroutine sub1(t1,t2,....) 
... 
end module 

+++++++++++++++++++++++++++++++++ 
另一种: 

program main 
use mod1 
... 
call sub1 
call sub2 
... 
end program 

module mod1 
对a1,a2....,b1,b2....声明 
... 
subroutine sub1 
... 
subroutine sub2 
... 
end 

第一种要写很长的参数列表,当子例程比较多时,看起来很乱,但在子例程部分只用写 
一遍就行了。而第二种没有参数列表,但子例程部分都要抄两遍。 

两种从效率和空间利用上有没有什么区别?一般来说应该采取哪种方式? 

[em10]谢谢

回复列表 (共4个回复)

沙发

我觉的还是应该用第一种形式,函数有自己的形参,容易看出输入输出。
另外第二种形式在模块里定义变量,然后在主程序里又有一些定义的变量,不留神就冲突了

板凳

为什么 不用模块来传递数据,省时又省事。就是变量名要注意不能和主程序、子程序里的一样,一样了会提示错误的吧。
详细内容见fortran_95-2003_for_scientists_and_engineers__3rd_edition   page329

3 楼


如果用module传递的话,就是我第二种方式,可这样子的话,岂不是要同样的内容要写两遍?如果这个module涉及的subroutine又特别多的话,好麻烦

4 楼

两种方式结合使用。

我来回复

您尚未登录,请登录后再回复。点此登录或注册