Fortran Coder

查看: 9945|回复: 2
打印 上一主题 下一主题

[求助] 关于fortran子程序直接传参和指针传参的区别

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
38 元
贡献
18 点
跳转到指定楼层
楼主
发表于 2017-2-23 18:26:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问fortran传参给子程序或函数时是不是传址?如果是那和其指针功能在很大程度上不就重了吗?请高人指点
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2017-2-23 18:36:21 | 只看该作者
本帖最后由 vvt 于 2017-2-23 18:41 编辑

是的。传的是地址。正是因为这一点,所以指针,在fortran里的应用并没有很高的必要性(与C相比)

然而,并不是说fortran传递指针就没必要了。毕竟,fortran的指针,是“智能指针”,自带目标数组的维度大小上限下线间距等“额外信息”
举例来说:
[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  real , target ::x(3:5) = 3.1415954
  real , pointer :: p(:)
  p => x
  call subp( p )
  call subx( x )
contains

  subroutine subp(x)
    real , pointer :: x(:)
    write(*,*) x , ubound(x) , lbound(x)
  end subroutine subp

  subroutine subx(x)
    real :: x(:)
    write(*,*) x , ubound(x) , lbound(x)
  end subroutine subx

End Program www_fcode_cn

5

帖子

2

主题

0

精华

入门

F 币
38 元
贡献
18 点
板凳
 楼主| 发表于 2017-2-23 20:32:27 | 只看该作者
vvt 发表于 2017-2-23 18:36
是的。传的是地址。正是因为这一点,所以指针,在fortran里的应用并没有很高的必要性(与C相比)

然而,并 ...

跑了一下这个例子,区别一目了然,非常感谢你的解答~!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-24 07:21

Powered by Tencent X3.4

© 2013-2024 Tencent

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