FORTRAN语言:module中的子程序中定义的数组是全局变量吗

2024-12-20 02:26:41
推荐回答(1个)
回答1:

Fortran 语言里没有全局变量这个叫法。
一些老的教科书习惯把 common 里的变量,称为全局变量。其实是不对的,应该叫“未命名的common 数据”。

module 中定义的变量,可以在 use 了该module 的程序单元里通用,并共享同一个内存空间。前提是该变量有 public 和 save 属性。(如果没有指定save,则默认具有save属性。如果没有指定 private,则默认具有 public 属性)

而 module 中的子程序,其内部的变量,与常规的子程序的内部变量一样,其值在该子程序范围内有效。退出该子程序后,其地址和值就变为不确定。
除非你指定了它具有 save 属性。
子程序中具有 save 属性的变量,在下次进入子程序时,保留上一次的值。但也不能在子程序之外直接使用它。