关于fortran全局变量设在module里面,还用common语句声明么?

 我来答
天河流纹石
推荐于2017-11-25 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7623
采纳率:76%
帮助的人:6630万
展开全部
common 不是全局变量。国内有的教科书这么叫,是不对的。
common 应该叫未命名的common数据块。同时,还有已命名的common块。
全局变量的叫法,如果跟国外的学者或程序员交流,会出现障碍的。

common 是一种早期的数据共享方式,由于其严重的不以变量名对应,而已顺序对应等原因,导致很多莫名其妙的错误发生。因此,我强烈建议你放弃使用它。

module 是更好的解决方案。同一个 module 中的变量,只要不是private属性的,都可以被所有 use 了该 module 的程序单元使用。且共用一个内存地址。
module 具有比 common 更好的共享方式。不容易出错,按照人们习惯的变量名对应。

因此,如果你学习使用 module 了,请不要在其中夹杂进古老的 common 用法。

对于 common 用法,我建议的态度是:看到了,能理解能认识。自己坚决不用。
追问
但是这样能做到数据共享么,比如我在一个子程序(不是module contains里的子程序)
里调用module,为一个变量a赋值 a=10。此时这个变量就是个局部变量。我在另一个子程序再次调用时module,a还等于10么?
追答
共用一个内存地址。意思就是可以。

下面的事情,你不必知道,但知道了,对你或许有帮助:
其实,对编译器而言。module A 里面的变量 B,不叫 B,而叫 A::B。
每一个 use 了 A 的程序,其内部使用 B,编译器都视为 A::B。
比如 函数 c ,d,e,f 里都 use 了 A,他们里的 B,都是 A::B。
所以,每一个 A::B 都是一样的,编译器视为完全相同。
(不同的编译器可能不同,有的内部叫 A::B,有的内部叫 Mod_A_B 这样。但不管怎样,这个内部名称,程序员一般看不到,也不关心)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式