一行Fortran代码的解释

一行Fortran代码的解释,fortran,fortran90,Fortran,Fortran90,我已经试着弄明白这两行代码的含义有一段时间了: TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:) 我使用的是代码块,IMOD以绿色字体显示,这似乎表明IMOD是一个内在函数。我知道第二行是设置指针,但我不明白为什么会有内在函数。我也不清楚如何两次使用JEK——第二行中的两个JEK指的是不同的实体吗?@paxdiablo的评论很贴切,我只是在虚荣地追求代表性的过程中对其进行一点扩展 TYPE(DGRID),TARGET,ALLOCATABLE :: DGR

我已经试着弄明白这两行代码的含义有一段时间了:

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


我使用的是代码块,IMOD以绿色字体显示,这似乎表明IMOD是一个内在函数。我知道第二行是设置指针,但我不明白为什么会有内在函数。我也不清楚如何两次使用JEK——第二行中的两个JEK指的是不同的实体吗?

@paxdiablo的评论很贴切,我只是在虚荣地追求代表性的过程中对其进行一点扩展

TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:)
声明dgrid类型的数组。从这一点,以及所示的另一行,代码的其他地方肯定有一个声明

type :: dgrid
    ...
    <type> :: jek
    ...
end type
将名为jek的指针与数组dgrids的imod th元素的元素jek相关联。代码中的其他地方是这样的声明

<type_of_jek>, pointer :: jek
如果代码块告诉您imod是一个函数,这会误导您,即使没有参数的函数也必须被称为imod。imod必须是整数


jek这个名字用了两次,它标识了不同的东西。也许程序员的手指已经厌倦了反复键入DGRIDSIMOD%,于是程序员想到了使用jek作为DGRIDSIMOD%jek的简写别名。对于超现代编译器,associate语句也可以实现同样的功能,尽管它不是Fortran指针的通用替代品,只是定义别名的替代机制

@paxdiablo的评论恰到好处,我只是在虚荣地追求代表的过程中对其进行一点扩展

TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:)
声明dgrid类型的数组。从这一点,以及所示的另一行,代码的其他地方肯定有一个声明

type :: dgrid
    ...
    <type> :: jek
    ...
end type
将名为jek的指针与数组dgrids的imod th元素的元素jek相关联。代码中的其他地方是这样的声明

<type_of_jek>, pointer :: jek
如果代码块告诉您imod是一个函数,这会误导您,即使没有参数的函数也必须被称为imod。imod必须是整数


jek这个名字用了两次,它标识了不同的东西。也许程序员的手指已经厌倦了反复键入DGRIDSIMOD%,于是程序员想到了使用jek作为DGRIDSIMOD%jek的简写别名。对于超现代编译器,associate语句也可以实现同样的功能,尽管它不是Fortran指针的通用替代品,只是定义别名的替代机制

我不确定IMOD是否是一个函数,例如,它似乎是C语言中的数组语法la dgrids[IMOD]。DGRIDS也支持这一点:它看起来很像一个数组。我不确定IMOD是否是一个函数,例如,在C语言中,它似乎是数组语法la-DGRIDS[IMOD]。DGRIDS也支持这一点:它看起来可疑地像一个数组。人们通常不赞成在评论中说谢谢,但在这种情况下,这是如此明确和有用,以至于我无法阻止自己。另外,我想说,关于你提到的声明的存在,你是100%正确的,我后来发现了。该死的,你很好。一般人都不赞成在评论中说谢谢,但在这种情况下,这是如此明确和有益,以至于我无法阻止自己。另外,我想说,关于你提到的声明的存在,你是100%正确的,我后来发现了。该死的,你很好。