W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
剛才提到的子程序中定義的變量是局部變量,不會干擾主程序中的其他變量,但是如果我們想要把子程序計算的結(jié)果返回給主程序呢?在其他的編程語言中,可能大部分是使用 return 加變量名的方式來將子程序中的變量傳遞回主程序。在 Fortran 中,子程序會將參數(shù)變量全部返回給主程序,可以認(rèn)為是地址引用。如果主程序調(diào)用子程序時用一個算式傳遞變量給子程序,那么可以認(rèn)為是值引用。
如下面的示例 4 所示,主程序中調(diào)用子程序時最后的變量 p 就是要保存返回值的變量。從執(zhí)行結(jié)果也可以看出,變量 x 和 y 并沒有受到子程序的影響,只有變量 p 帶著子程序的變量 z 的值正確返回了。因為這里 x+y 作為子程序中的 x 存在,而 x+y 這個變量實際上在主程序中不存在,所以是值引用。
!!! 示例 4
program stest4
implicit none
real x, y, p
x = 10.0
y = 30.0
call subr4(x+y, 20.0, p)
print *, x, y, p
end program stest4
subroutine subr4(x, y, z)
implicit none
real x, y, z
z = x*y
end subroutine subr4
!!! 執(zhí)行結(jié)果
>>> 10.0000000 30.0000000 800.000000
值引用和地址引用的定義:值引用是指引用值而不引用原來的變量或者存儲器中對應(yīng)的地址,地址引用是指引用原來的變量或者存儲器中對應(yīng)的地址。
值引用和地址引用的區(qū)別:前者不會因子程序的操作而發(fā)生改變,后者可能會因子程序的操作而發(fā)生改變。如果我們僅僅是為了傳遞某個值給子程序作為輸入,可以采用值引用,從而避免對于主程序的干擾。如果我們希望子程序的操作改變變量的值,可以采用地址引用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: