|
本帖最后由 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
|
|