character(20) :: a='', b
当我定义字符串a ='' 时,a得到一个空字符串值。我没有初始化b,因此b没有值。我认为内存地址已按照定义分配给a和b 。然而,空刺和无价值有什么区别呢?
请注意 Fortran 中的意外行为,声明中的初始化意味着该save属性,这意味着初始化仅在第一次调用函数/子例程时有效,并且稍后写入字符串的任何内容都将在以后的调用中保留在那里。使函数成为纯函数、基本函数或递归函数将导致编译错误。
一般来说,您应该在声明之后进行初始化!
\n所以一般来说变量只能像这样声明character(20) :: a。Nowa是在内存中分配的,一般来说,在该内存序列中写入的内容都将是变量所包含的内容,直到您分配给它为止。如果您在没有先分配的情况下打印它,您将看到这些内存字节的字符串解释。
例如
\nprogram t\n character (20) :: hej\n print*,hej\nend program \nRun Code Online (Sandbox Code Playgroud)\n当运行几次时(在带有 gcc 的 ubuntu 中),给出这些随机的东西:
\n\xef\xbf\xbd\xc6\xb2\n86+\n^\xef\xbf\xbdK\nVBd\xef\xbf\xbd\n&\xef\xbf\xbd\xef\xbf\xbdA\nRun Code Online (Sandbox Code Playgroud)\n