中易网

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

答案:1  悬赏:50  
解决时间 2021-03-09 00:39
关于fortran全局变量设在module里面,还用common语句声明么?
最佳答案
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 这样。但不管怎样,这个内部名称,程序员一般看不到,也不关心)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
超感警探第一季
《胡小闹日记》之《坏人都知道我有多厉害》读
我性格欺硬怕软该怎么改改?
起一个英文名字 我一个个朋友 是一个男生 想
成都市迎辉化工有限公司怎么去啊,有知道地址
一个男的总跟你开玩笑,还老对你有肢体上的动
3DMAX2009序列号是多少啊
我想去城里上学,妈妈不让怎样说服妈妈
位于山东半岛东南部的名山,位于江西省北部的
浙江万里学院政教处在哪
用什么句子来形容一个人不知道咋办才好呢?
蕉岭县新春花木有限公司地址在哪,我要去那里
这句日语是什么意思呢?あなたとの日々は仆の
小孩平衡能力差,是什么原因
请高手解答。这是天才俱乐部门萨网站的题目。
推荐资讯
嘿店造型这个地址在什么地方,我要处理点事
人在外地,电话没费了,谁都联系不到,没法冲
花苞裙,百褶裙,蛋糕裙哪个显瘦 比较好看时
腾威大众舞厅地址有知道的么?有点事想过去
明德润和自动化设备(天津)有限公司地址有知道
泉秀综治、司法办流动人口法律培训中心地址在
小狗吃了坏蛋闹肚子怎么办
求一个直播英雄联盟全特效 的配置单
更深月半斜,山居一人家,有人以此意作画,不
PRCC怎样安装字体
合江路中学地址在哪,我要去那里办事
图中的32.5"-35"是什么意思?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?