面向初学者的 FORTRAN 中的数组声明

Array declaration in FORTRAN for beginners

这是一个初学者问题,但我还没有找到全面的答案。

以下声明有何不同(如果有)?

CHARACTER(5) :: a
CHARACTER, DIMENSION (5) :: b
CHARACTER(LEN=5) :: c
CHARACTER :: d(5)
CHARACTER :: e*5

并且:是否所有这些声明都可以与其他类型一起使用,例如 REAL?

其中三个声明了一个包含 5 个字符的字符串的字符变量。其中两个声明了一个包含 5 个字符的数组,每个字符可以容纳一个字符。

声明 5 个元素数组的两个与声明 5 个实数数组的方式相同。声明长度为 5 的字符的三个在其他变量类型中没有类似物。然而,这三个子集的特定语法将编译,但将用于 select 不同的 种类 实数,而不是表示字符长度。

无论类型如何,<type>,dimension(5) :: b<type> :: b(5)是相同的,表示长度为5的数组。 <type> 可以是例如characterintegerreallogical

character(5)character(len=5) 的缩写,声明了一个长度为 5 的字符串。如果省略长度,则假定为打开。 character :: d(5) 是五个长度为 1 的字符串的数组。

character :: e*5 是指定字符串长度的旧变体。

len 是字符串固有的(并且对于例如浮点数没有意义)。不过,您可以指定自己的派生类型的长度为 len("Parameterized derived types")。对于整数和浮点数(以及其他一些),您可以以类似的方式指定变量的 kind

有关详细信息,请参阅 Fortran 2008 Standard,Ch。 4.4.3.2 "Character type specifier"