Fortran Coder

查看: 1727|回复: 1
打印 上一主题 下一主题

[子程序] 函数参数PV(NCM,*)问题

[复制链接]

237

帖子

0

主题

0

精华

版主

World Analyser

F 币
638 元
贡献
468 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
楼主
发表于 2023-3-19 17:54:02 | 显示全部楼层
本帖最后由 kyra 于 2023-3-19 17:57 编辑

1. 需要在函数里定义一下,给出第一第二维的大小,第三个维度可以不给出。DOUBLE PRECISION BUF(NCF,NCM,*),PV(NCM,*) 这句代码就是在做这个事情。
这种传递数组的方式叫“假定大小”,其最后一个维度的大小假定,说白了就是放任不管,数组越界了也不管。
这是非常危险的,不推荐采用这种方式。

和数据的类型(double或者int)无关,无论什么类型,都是同样的规律。

2. 是的。
但由于Fortran传递的是地址,所以尽管从IPT(1,11)开始传递,其后的数据,也可以被子程序interp访问到。
这种也是很危险的用法,现代Fortran代码是不会这样的。

现代代码,一般都用 Module + 假定形状传递数组。也就是类似 DOUBLE PRECISION BUF(:,:,:),PV(NCM,:) 这样的写法。
详情你可以看 http://fcode.cn/guide-103-1.html

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

本版积分规则

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

GMT+8, 2024-5-5 10:18

Powered by Tencent X3.4

© 2013-2024 Tencent

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