W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
子程序中定義的局部變量和參數(shù)獨立于主程序。也就是說,當我們在主程序和子程序中同時定義相同名稱的變量時,其實它們之間也是不同的。只有當我們在調用子程序時使用主程序中同名的變量對參數(shù)進行賦值時,主程序和子程序的同名變量才會具有相同的值。
如下面的示例 1 所示,編譯執(zhí)行的結果并非是期待的 10.0 和 30.0。
!!! 示例 1
program stest1
implicit none
real x, y
x = 10.0
y = 30.0
call subr1
end program stest1
subroutine subr1
implicit none
real x, y
print *, x, y
end subroutine subr1
!!! 執(zhí)行結果
>>> 2.80259693E-45 0.00000000
當我們修改為帶初始化變量的子程序時,如示例 2 所示,編譯執(zhí)行的結果和期待的一樣。
!!! 示例 2
program stest2
implicit none
real x, y
x = 10.0
y = 30.0
call subr2(x, y)
end program stest2
subroutine subr2(x, y)
implicit none
real x, y
print *, x, y
end subroutine subr2
!!! 執(zhí)行結果
>>> 10.0000000 30.0000000
這兩個例子的對比再一次證明了子程序中定義的變量所具有的局部性,必須通過參數(shù)傳遞的方式才能與主程序同名變量保持一樣的初始化值。同樣地,這種局部性也會讓主程序的變量值不會因為子程序的同名變量值發(fā)生改變而改變。
有人可能會有疑問,如果子程序中的參數(shù)使用的變量名與主程序的變量名不一致,調用能不能成功呢?當然是能夠成功的。如下所示,將示例 2 中子程序原來的參數(shù) x 和 y 換成 a 和 b,依然可以輸出正確結果。
subroutine subr2(a, b)
implicit none
real a, b
print *, a, b
end subroutine subr2
!!! 執(zhí)行結果
>>> 10.0000000 30.0000000
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: