有关fortran的若干问题

2025-03-02 00:33:12
推荐回答(2个)
回答1:

主程序里的变量,默认情况下,在其他函数或子程序里是不能使用的。

这一点,等你书写比较大的代码就会懂了。这样保证了代码的可移植性,独立性!


试想一下,如果可以直接使用,将会多么麻烦,使用任何一个子程序时,都要避免使用与他内部全部变量相同名称的变量。如果我使用了1000个子程序,每个子程序里10个变量,我至少要避免使用10000个变量名字。天哪。


按照生活中的例子来说,一个建筑公司为别人提供建筑服务,他自己有2000个员工。它不但要保证2000个员工不能有重名。而且要求他的甲方,也就是想要建筑服务的公司,也不能有员工叫这些名字。这是多么难缠??


如果你要把变量传递到子程序中。有三个方法:

  1. 使用虚参和实参对应。这是常规方法。

  2. 使用 COMMON,但是目前这个语法已经建议不要使用了。

  3. 使用 Module,对于大量的数据,我建议你选择这种方式。


回答你的几个问题:

  1. 子程序和主程序里,相同名称的变量,如果没有上述三种方式的传递,那么根本就是两个变量。

  2. 动态数组无法通过 COMMON 传递。但可以通过 Module

  3. COMMON 建议不要使用了,改用 Module

回答2:

不要用common了 好久之前的语法了

定义全局变量可以用parameter定好
如果参数是可变的
在子程序里面定义一下
比如 integer nx
......
call hellofriend(xx,yy,nx)
integer xx,yy,nx
就可以了