Fortran Coder

标题: 可分配数组不能作为形参吗? [打印本页]

作者: likm1110    时间: 2015-5-8 13:45
标题: 可分配数组不能作为形参吗?
    如题,今天把要传递到子程序的数组定义成Allocatable,结果编译失败了。可分配数组不能当形参?


作者: vvt    时间: 2015-5-8 15:42
本帖最后由 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





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

好吧。。。。我似乎还是95呢......怪不得不成功= =orz谢啦~~~




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2