我正在尝试优化fortran77中的代码,我想知道在例程或头文件中以以下方式声明的数组是指针数组还是结构数组:
情况1:实数*8 xred(maxatm)
案例2: common /atom/ x(maxatm)
我已经在互联网上搜索过了,但我找不到任何关于这方面的信息,我唯一发现的是,当你将一个数组传递给一个例程时,它是通过引用传递的。但是关于它是在头文件中声明的,还是在例程中声明的,我什么也没发现。
提前感谢!
发布于 2012-03-08 03:35:45
在.f77 'header'/common/.CMN文件中,您声明了要在程序中使用的变量。这些变量所需的空间是在编译时为包含头声明的每个文件建立的。因此,对于包含以下内容的'My.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每次通过INCLUDE 'My.CMN'在.f77文件中声明这些变量时,都会创建它们。
但是,使用公共块
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 FORTRAN774.0编译器参考手册的COMMON和here的更多信息,请参阅here。
https://stackoverflow.com/questions/9607674
复制相似问题