Fortran 數(shù)組變量的順序?qū)?yīng)

2023-12-29 15:32 更新
如果將 a(1) 修改為 a(3) 并保持?jǐn)?shù)組 a 的長(zhǎng)度為 10,即數(shù)組 a 和數(shù)組 x 不從第一個(gè)元素開(kāi)始對(duì)應(yīng),那么源代碼將無(wú)法被編譯,如示例 5 的變種一所示。

要想在這種情況下還能正常編譯,我們就必須擴(kuò)充數(shù)組 a 的長(zhǎng)度至少為 12。這樣一來(lái),子程序中要賦值的數(shù)都能正確存入數(shù)組 x 并返回給主程序的數(shù)組變量 a,如示例 5 的變種二所示。!!! 示例 5 的變種一

program stest5
implicit none
real a(10)
call sub(a(3))
print *, a(3)
end program stest5

subroutine sub(x)
implicit none
real x(10)
integer i
do i = 1, 10
x(i) = i
enddo
end subroutine sub

!!! 執(zhí)行結(jié)果
>>> Error: Actual argument contains too few elements for dummy argument 'x' (8/10) at (1)

!!! 示例 5 的變種二
program stest5
implicit none
real a(12)
call sub(a(3))
print *, a(3)
end program stest5

subroutine sub(x)
implicit none
real x(10)
integer i
do i = 1, 10
x(i) = i
enddo
end subroutine sub

!!! 執(zhí)行結(jié)果
>>> 1.00000000

其實(shí),在子程序中也可以不定義數(shù)組的長(zhǎng)度,將長(zhǎng)度設(shè)置為 ?*?。

如下示例 6 所示,子程序的功能是將數(shù)組 a 中的前 n 個(gè)元素復(fù)制給數(shù)組 b。

!!! 示例 6
subroutine copy(a, b, n)
implicit none
real a(*), b(*)
integer n, i
do i = i, n
b(i) = a(i)
enddo
end subroutine copy


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)