我一直试图弄清楚这两行代码的含义:
TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:)
Run Code Online (Sandbox Code Playgroud)
...
JEK => DGRIDS(IMOD)%JEK
Run Code Online (Sandbox Code Playgroud)
我正在使用代码块,IMOD以绿色字体显示,这似乎表明IMOD是一个内在函数.我理解第二行是设置指针,但我无法弄清楚为什么内在函数存在.我也不清楚如何使用JEK两次 - 第二行中的两个"JEK"是指不同的实体吗?
@ paxdiablo的评论是现货,我只是在对代表的追求中扩展一点...
TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:)
Run Code Online (Sandbox Code Playgroud)
声明一个类型的数组dgrid.从那以及显示的另一行,肯定在代码的其他地方有一个声明
type :: dgrid
...
<type> :: jek
...
end type
Run Code Online (Sandbox Code Playgroud)
是一个恢复的片段.因此jek(我对Fortran本身不敏感)被用作类型元素的名称dgrid.
这条线
JEK => DGRIDS(IMOD)%JEK
Run Code Online (Sandbox Code Playgroud)
将调用的指针jek与数组jek的imod-th元素的元素相关联dgrids.代码中的其他地方就是这样的声明
<type_of_jek>, pointer :: jek
Run Code Online (Sandbox Code Playgroud)
如果CodeBlocks告诉你这imod是一个误导你的函数,那么即使是没有参数的函数也必须被称为imod(). imod必须是整数.
该名称jek使用两次,它标识不同的东西.也许程序员的手指厌倦了DGRIDS(IMOD)%反复打字,程序员也想到了jek用作速记别名的想法DGRIDS(IMOD)%JEK.使用超现代编译器,可以使用该associate语句实现相同的功能,尽管这不是Fortran指针的一般替代,只是用于定义别名的替代机制.
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |