[英]Fortran 90 Differences in declaring allocatable array
兩者之間有區別嗎?
integer, intent(in) :: n
integer, dimension(:), allocatable :: a
allocate(a(n))
和
integer, intent(in) :: n
integer, dimension(n) :: a
在哪種情況下我們會使用第一個版本? 也許我誤解了可分配的數組,第二個版本甚至是可分配的數組?
第二種情況確實沒有a
分配。 然而,它是一個自動對象。
忽略實現級別的內存使用的實際差異,存在很大差異。 是的,每個a
(假設問題中沒有明確說明的話)是一個局部變量,它在allocate
和自動創建之后是大小為n
,但在第一種情況下它是可分配的。 它可以被釋放,重新分配(可能是不同的大小),並再次釋放。 等等。
自動對象(第二種情況)不能。
第一種情況是可分配的數組。 可以在運行時在任何范圍內動態地分配或重新分配陣列中的元素的數量。
第二種情況是由偽參數定義的固定數量元素的自動數組。 根據偽參數中傳遞的大小,它的大小只能在調用它的過程中在本地更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.