假定和延遲長度型別引數
字元型別或具有長度引數的派生型別的變數可以具有假定或延遲的長度引數。字元變數 name
character(len=len) name
貫穿執行時的長度為 len
。相反,長度說明符可以是
character(len=*) ... ! Assumed length
要麼
character(len=:) ... ! Deferred length
假設長度變數假定其長度來自另一個實體。
在功能
function f(dummy_name)
character(len=*) dummy_name
end function f
偽引數 dummy_name
具有實際引數的長度。
名為 constant const_name
in
character(len=*), parameter::const_name = 'Name from which length is assumed'
長度由右側的常量表示式給出。
延遲長度型別引數可能在執行期間變化。具有延遲長度的變數必須具有 allocatable
或 pointer
屬性
character(len=:), allocatable::alloc_name
character(len=:), pointer::ptr_name
可以通過以下任何方式設定這樣的變數長度
allocate(character(len=5) :: alloc_name, ptr_name)
alloc_name = 'Name' ! Using allocation on intrinsic assignment
ptr_name => another_name ! For given target
對於具有長度引數化的派生型別,語法類似
type t(len)
integer, len::len
integer i(len)
end type t
type(t(:)), allocatable::t1
type(t(5)) t2
call sub(t2)
allocate(type(t(5)) :: t1)
contains
subroutine sub(t2)
type(t(*)), intent(out) :: t2
end subroutine sub
end