解释一行Fortran代码

时间:2014-11-27 03:39:34

标签: fortran fortran90

我一直试图弄清楚这两行代码的含义:

TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:)

...

JEK     => DGRIDS(IMOD)%JEK

我正在使用代码块,IMOD以绿色字体显示,这似乎表明IMOD是一个内在函数。我理解第二行是设置指针,但我无法弄清楚为什么内在函数存在。我也不清楚如何使用JEK两次 - 第二行中的两个“JEK”是指不同的实体吗?

1 个答案:

答案 0 :(得分:5)

@ paxdiablo的评论很有见,我只是在对代表的追求中展开一点...

TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:)

声明类型为dgrid的数组。从那以及显示的另一行,肯定在代码的其他地方有一个声明

type :: dgrid
    ...
    <type> :: jek
    ...
end type

是已恢复的片段。所以jek(我对Fortran本身不敏感)被用作dgrid类型元素的名称。

该行

JEK     => DGRIDS(IMOD)%JEK

将名为jek的指针与数组jek的{​​{1}}元素的元素imod相关联。代码中的其他地方就是这样的声明

dgrids

如果CodeBlocks告诉你<type_of_jek>, pointer :: jek 是一个误导你的函数,即使是没有参数的函数也必须被称为imodimod()必须是整数。

名称imod使用两次,它标识不同的内容。也许程序员的手指厌倦了反复键入jek,程序员想到使用DGRIDS(IMOD)%作为jek的速记别名。使用超现代编译器,可以使用DGRIDS(IMOD)%JEK语句实现相同的功能,尽管这不是Fortran指针的一般替代,只是用于定义别名的替代机制。