字符声明表
Character declaration forms
下面的字符声明是什么意思
character :: c*4
它对字符有特殊意义还是适用于所有数据类型?
4和长度参数一样吗
character(len=4) :: c
有几种方法可以在类型声明语句中声明字符实体的长度,但对这些的解释分散在其他几个问题和答案中,所以让我们在这里收集它们。问题的形式具有相同的效果。
字符声明语句可以使用 len=
形式在类型说明符中指定长度:
character(len=4) :: ... ! Literal constant length
character(len=n) :: ... ! Named constant/variable length
character(len=*) :: ... ! Assumed/implied length
character(len=:) :: ... ! Deferred length
或使用 *
形式:
character*4 :: ... ! Literal constant length
character*(4) :: ... ! Another literal constant length
character*(n) :: ... ! Named constant/variable length
character*(*) :: ... ! Assumed/implied length
character*(:) :: ... ! Deferred length
对于文字常量,括号是可选的,不是必需的,但对于其他情况是必需的。
或者,*
形式可用于实体声明本身:
character :: a*4, b*(n), c*(*), d*(:)
character(len=2) :: x*4 ! The *4 overrides the len=2
在所有情况下,如果未指定值,1
是默认长度。
如果你想用这种方式指定长度和数组形状:
character :: a(5,5)*4
character(len=2), dimension(2) :: b(5,5)*4 ! Shape and length overridden.
使用 *
的规范形式对于字符长度(对于函数和变量)是唯一的。即使是具有长度类型参数的非字符对象也不能使用此语法。但是,正如 Vladimir F 指出的那样,存在类似的非标准形式,例如 integer*4
.
最后,name*(len)
形式特定于类型声明语句。它不能被使用,例如,在分配中:
character(:), allocatable :: c
allocate(character :: c*4) ! Not allowed as length specification, use instead
allocate(character(len=4) :: c) ! or
allocate(character*4 :: c) ! etc
是的,它们都是相同长度的字符串。另见 。
该语法完全针对字符,不能用于其他数据类型。重新使用 integer*4
等其他数据类型的语法可能是出于旧的 Hollerith 编辑的动机,其中字符以整数形式存储,但完全不标准。
下面的字符声明是什么意思
character :: c*4
它对字符有特殊意义还是适用于所有数据类型?
4和长度参数一样吗
character(len=4) :: c
有几种方法可以在类型声明语句中声明字符实体的长度,但对这些的解释分散在其他几个问题和答案中,所以让我们在这里收集它们。问题的形式具有相同的效果。
字符声明语句可以使用 len=
形式在类型说明符中指定长度:
character(len=4) :: ... ! Literal constant length
character(len=n) :: ... ! Named constant/variable length
character(len=*) :: ... ! Assumed/implied length
character(len=:) :: ... ! Deferred length
或使用 *
形式:
character*4 :: ... ! Literal constant length
character*(4) :: ... ! Another literal constant length
character*(n) :: ... ! Named constant/variable length
character*(*) :: ... ! Assumed/implied length
character*(:) :: ... ! Deferred length
对于文字常量,括号是可选的,不是必需的,但对于其他情况是必需的。
或者,*
形式可用于实体声明本身:
character :: a*4, b*(n), c*(*), d*(:)
character(len=2) :: x*4 ! The *4 overrides the len=2
在所有情况下,如果未指定值,1
是默认长度。
如果你想用这种方式指定长度和数组形状:
character :: a(5,5)*4
character(len=2), dimension(2) :: b(5,5)*4 ! Shape and length overridden.
使用 *
的规范形式对于字符长度(对于函数和变量)是唯一的。即使是具有长度类型参数的非字符对象也不能使用此语法。但是,正如 Vladimir F 指出的那样,存在类似的非标准形式,例如 integer*4
.
最后,name*(len)
形式特定于类型声明语句。它不能被使用,例如,在分配中:
character(:), allocatable :: c
allocate(character :: c*4) ! Not allowed as length specification, use instead
allocate(character(len=4) :: c) ! or
allocate(character*4 :: c) ! etc
是的,它们都是相同长度的字符串。另见
该语法完全针对字符,不能用于其他数据类型。重新使用 integer*4
等其他数据类型的语法可能是出于旧的 Hollerith 编辑的动机,其中字符以整数形式存储,但完全不标准。