我试图理解以下内容中包含的 Fortran 代码: http://heath.cs.illinois.edu/courses/cs598mh/george_liu.pdf
具体来说,子例程中的数组变量声明。这是一个例子:
SUBROUTINE ROOTLS (ROOT, XADJ, ADJNCY, MASK, NLVL, XLS, LS)
C
INTEGER ADJNCY(1), LS(1), MASK(1), XLS(1)
INTEGER XADJ(1), I, J, JSTOP, JSTRT, LBEGIN
我对数组名称后面的 (1)
感到困惑,例如 ADJNCY(1)
和 XADJ(1)
。这些数组肯定比一个大。 (1)
在这些声明中起什么作用?
最佳答案
事实上,这不是 FORTRAN 77,而是 FORTRAN 66 ;-)
(1)
是 dirty hack in FORTRAN 66构造类似于假定大小的数组的东西。在 FORTRAN 77 中,这被标准化为 (*)
。
假设大小意味着数组的实际大小取决于传递给子例程的实际数组的长度。但请注意,数组的形状不一定会保留!搜索 here对此有很好的解释。
关于子例程中的数组,Fortran 77,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463407/