C 数组总是从 0 开始,而 Fortran 数组在缺省情况下是从 1 开始。有两种常用的索引处理方法。
如上述示例所示,可以使用 Fortran 缺省设置。此时,Fortran 元素 B(2) 等同于 C 元素 b[1]。
可以指定 Fortran 数组 B 以 B(0) 开始,如下所示:
INTEGER B(0:2) |
这样,Fortran 元素 B(1) 就等同于 C 元素 b[1]。
Fortran 数组按列主顺序存储:A(3,2)
A(1,1) A(2,1) A(3,1) A(1,2) A(2,2) A(3,2) |
C 数组按行主顺序存储:A[3][2]
A[0][0] A[0][1] A[1][0] A[1][1] A[2][0] A[2][1] |
这对于一维数组不存在任何问题。但对于多维数组,应注意下标在所有引用和声明中是如何出现和使用的-可能需要做些调整。
例如,在 C 中进行部分矩阵操作,而后在 Fortran 中完成余下部分,这样做可能会产生混淆。最好是将整个数组传递给另一语言中的例程,然后在该例程中执行所有矩阵操作,以避免在 C 和 Fortran 中各执行部分操作的情况。