Fortran Coder

查看: 18551|回复: 4
打印 上一主题 下一主题

[指针] Fortran指针和指针函数的问题

[复制链接]

3

帖子

1

主题

0

精华

入门

F 币
47 元
贡献
26 点
跳转到指定楼层
楼主
发表于 2014-5-16 22:39:24 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
问题1:
我们知道,子程序中使用Allocate语句动态分配内存空间的指针,在退出子程序时需要使用Nullify语句解除指针与目标之间的关联。
那么在子程序中,有些指针指向了带target属性的变量。
在退出子程序前,这些指针是否也有必要使用Nullify语句解除关联?

问题2:
假定有一个指针函数如下:
[Fortran] 纯文本查看 复制代码
        Function PointOfFrameworkSite(Iselect)

        Integer, Intent(In) :: Iselect
        Type(Type_Sites), Dimension(:), Pointer :: PointOfFrameworkSite

        Select Case(Iselect)
          Case(1)
                PointOfFrameworkSite => Framework%Site
          Case(2)
                PointOfFrameworkSite => Framework%OpenMetalSite
          Case Default
                Write(*,*) "Unknown SBU Type"
        End select

        Return
        End Function PointOfFrameworkSite


然后在某个模块下的内部子程序中,需要使用这个指针函数(已使用use调用指针函数所在的模块)
那么如果A也是指针
[Fortran] 纯文本查看 复制代码
       A => PointOfFrameworkSite(I)
       A =   PointOfFrameworkSite(I)

这两种写法哪种更好


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

3

帖子

1

主题

0

精华

入门

F 币
47 元
贡献
26 点
沙发
 楼主| 发表于 2014-5-17 11:00:33 | 显示全部楼层
vvt 发表于 2014-5-17 06:44
问题1:
1. Nullify 只是设置指针的状态为空,并不释放allocate分配的内存。你应该在退出子程序时使用 Deal ...

1. 嗯,问题1那里是我语句使用错误了,感谢指正

2. 那个指针函数是放在一个单独的模块里,使用use调用Framework这个变量。
    Framework是一个几乎所有子程序都需要调用的全局变量,它被单独放在一个模块中定义,需要调用它的子程序使用use引用该模块。
    Framework%Site和Framework%OpenMetalSite是设定为动态分配的,在程序的某些步骤中进行分配和释放。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-8 00:22

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表