Fortran Coder

查看: 4360|回复: 9
打印 上一主题 下一主题

[子程序] 调用子程序为什么每一次得出的结果都不一样呢

[复制链接]

38

帖子

4

主题

0

精华

熟手

F 币
222 元
贡献
92 点
楼主
发表于 2022-4-3 20:52:29 | 显示全部楼层
sqs 发表于 2022-4-3 13:47
好的,那为什么我每次执行a.out的时候输出的结果都不一致呢

子程序没有输出位。主程序中的 f等于没有赋值,每次运行 print的是个随机地址的初始值

38

帖子

4

主题

0

精华

熟手

F 币
222 元
贡献
92 点
沙发
发表于 2022-4-3 21:02:11 | 显示全部楼层
本帖最后由 gps99 于 2022-4-3 21:03 编辑

增加输出位 是最直接的办法,上面的大咖已经给出代码。

另外,还有个老办法加common公共块。数据块内地址传递,和变量名无关。小程序可以用,数据多的话用module数据块代替
[Fortran] 纯文本查看 复制代码
program para
        implicit none
        real(8)::f
        common /d1/ f
        call func(1.0d0,1.0d0)
        print*,f
end program para

subroutine func(x,y)
        implicit none
        real(8),intent(in) :: x, y
        real(8) :: f
        common /d1/ f
        f = 2*x+3*y
end subroutine func


您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-16 11:51

Powered by Tencent X3.4

© 2013-2024 Tencent

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