Fortran Coder

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

[子程序] 可分配数组不能作为形参吗?

[复制链接]

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

跳转到指定楼层
楼主
发表于 2015-5-8 13:45:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    如题,今天把要传递到子程序的数组定义成Allocatable,结果编译失败了。可分配数组不能当形参?

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

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

QQ
沙发
发表于 2015-5-8 15:42:08 | 只看该作者
本帖最后由 vvt 于 2015-5-8 15:44 编辑

1. 对于可分配数组,如果已经分配,则可以当做普通数组变量传递。(虚参无需声明为allocatable)
2. 如果尚未分配就传递,这需要把虚参声明为 allocatable。
3. 对第二条的情况,Fortran95 以前不支持。只有 Fortran2003 和 2008 才支持。
4. 对第二条的情况。必须有 interface,或使用 module,或使用 contains 来避免书写 interface 。

[Fortran] 纯文本查看 复制代码
program www_fcode_cn
  real , allocatable :: a(:)
  call sub(a)
  write(*,*) a

contains

subroutine sub(x)
  real , allocatable ::x(:)
  allocate(x(3))
  x = 111.0
end subroutine sub
end program www_fcode_cn




55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

板凳
 楼主| 发表于 2015-5-9 09:17:51 | 只看该作者
vvt 发表于 2015-5-8 15:42
1. 对于可分配数组,如果已经分配,则可以当做普通数组变量传递。(虚参无需声明为allocatable)
2. 如果尚 ...

好吧。。。。我似乎还是95呢......怪不得不成功= =orz谢啦~~~
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-24 08:41

Powered by Tencent X3.4

© 2013-2024 Tencent

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