子例程中的数组,Fortran 77

标签 arrays fortran fortran77

我试图理解以下内容中包含的 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/

相关文章:

class - 是否可以在 Fortran 中使类实例可调用?

c++ - 从 Fortran 77 代码调用 C/C++ 代码

file-io - 打开第 5 或 6 单元上的文件

arrays - Nodejs数组indexof函数用法

大型数组的 PHP 内存错误

c - 将 c 数组作为可变大小的矩阵传递给 fortran

pointers - 在子例程中分配数组并将其传回时,FORTRAN 中的内存泄漏问题

c# - 将实际值从 fortran77 dll 返回到 c#

Javascript - 将数组值分配给名称

c++ - 在函数中创建值,然后将指针保存在全局指针数组中的值上