1

我正在尝试优化fortran77中的代码,我想知道在例程或头文件中以下列方式声明的数组是指针数组还是结构数组:

案例1:real*8 xred(maxatm)

案例 2:常见的 /atoms/ x(maxatm)

我已经在互联网上搜索过,但找不到任何有关此的信息,我发现的唯一一件事是,当您将数组传递给例程时,它是通过引用传递的。但是关于何时在头文件或例程中声明它,我一无所获。

提前致谢!

4

1 回答 1

2

在 .f77 'header'/common/.CMN 文件中,您声明要在程序中使用的变量。这些变量所需的空间是在编译时为每个包含头声明的文件建立的。所以对于包含

REAL*8 XEDG(-2:MAXNB+4)  ! left x-edges of cells    
REAL*8 YEDG(-2:MAXNB+4)  ! left y-edges of cells 
REAL*8 XC(-2:MAXNB+4) ! X CELL CENTERS
REAL*8 YC(-2:MAXNB+4) ! Y CELL CENTERS

每次在 .f77 文件中通过 .f77 声明这些变量时,都会创建这些变量INCLUDE 'My.CMN'

但是,使用公共块

COMMON /GRID/ XEDG,YEDG,XC,YC

告诉编译器包含在给定 .CMN 文件(或其他文件)中的变量在某种程度上是全局/共享的,这里编译器将使用指向内存中相关空间的指针。

The COMMON statement defines a block of main memory storage so that 
different program units can share the same data without using arguments.

有关Sun FORTRAN 77 4.0 编译器参考手册更多信息,请参见此处。COMMON

于 2012-03-07T19:35:45.313 回答