Fortran 主程序接收子程序返回的动态数组

本文的情况是,在调用子程序的时候,不清楚数组的大小。

其实,就是只要在主程序定义好接收的数组是动态数组,然后在子程序同样定义输出数组为动态数组,然后在子程序直接allocate,貌似allocate可以在主程序子程序间传递,所以直接接收就好了。如下示例代码:

    module dynamic_array_module
    implicit none

    contains

    subroutine create_dynamic_array(array, n)
    real, allocatable, intent(out) :: array(:,:)
    integer, intent(out) :: n

    n = 5
    allocate(array(n,n))
    array = 1.0

    end subroutine create_dynamic_array

    end module dynamic_array_module

    program main_program
    use dynamic_array_module
    implicit none

    integer :: n
    real, allocatable :: result_array(:,:)

    call create_dynamic_array(result_array, n)


    ! 在这里,可以使用result_array进行操作

    deallocate(result_array)

    end program main_program

运行后可以发现,result_array可以直接接收到子程序中的array。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空花缱绻三分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值