Fortran 全局變量

2023-12-29 15:32 更新
雖然我們在不同的子程序中使用同名的局部變量不會相互影響,但是有的時候也希望一些變量能在不同的子程序中共享使用,這類變量我們可以稱之為全局變量

Fortran 語言中全局變量必須使用 module 的方式單獨(dú)定義。當(dāng)在主程序或子程序中需要使用這些已定義的全局變量時,首先要使用 use <module 名> 來聲明引用,并且該聲明應(yīng)在 implicit none 之前。如下所示,定義了兩個整數(shù)類型的變量 nmin 和 nmax,以及實(shí)數(shù)類型的變量 tinitial 和 二維數(shù)組 amatrix。

module data1
integer nmin, nmax
real tinitial, amatrix(20, 30)
end module data1

示例 9 是一個完整的全局變量定義和使用的例子。可以看到,子程序并沒有聲明任何參數(shù),而是利用定義的全局變量 xais 和 yais 來從主程序中傳遞值到子程序中。這里的程序執(zhí)行順序是:主程序 → 調(diào)用子程序 → 子程序中的打印 → 子程序修改 yais 變量 → 主程序中的打印 → 程序結(jié)束。所以最終的執(zhí)行結(jié)果的第一行是子程序中打印還未修改的兩個全局變量,而第二行是主程序中打印已被子程序修改的兩個全局變量,符合預(yù)期效果。

!!! 示例 9
module global
real xais, yais
end module global

program stest4
use global
implicit none
xais = 5.0
yais = 100.0
call subr4
print *, xais, yais
end program stest4

subroutine subr4
use global
implicit none
print *, xais, yais
yais = 25.0
end subroutine subr4

!!! 執(zhí)行結(jié)果
>>> 5.00000000 100.000000
>>> 5.00000000 25.0000000

有的時候子程序中可能并不需要 module 中定義的所有全局變量,只想引入幾個有關(guān)的全局變量。在 Fortran 語言中可以用 ?only? 的語法來限定引入的全局變量,如下所示。

use 模塊名, only : 變量1, 變量2, ...
use global, only : yaxsis


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號