假定和延迟长度类型参数
字符类型或具有长度参数的派生类型的变量可以具有假定或延迟的长度参数。字符变量 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