Fortran中common
时间: 2023-11-27 20:50:13 浏览: 131
Fortran中的COMMON是一种用于在不同子程序之间共享变量的机制。它允许在一个程序或模块中定义一组变量,并将这些变量声明为COMMON块。然后,其他程序或模块可以使用相同的COMMON块名来引用这些变量,从而实现变量共享。
COMMON块通常在程序的开头或模块的顶部定义,并包含一组变量声明。例如,以下是一个COMMON块的示例:
```
COMMON /MYBLOCK/ X, Y, Z
```
在这个例子中,MYBLOCK是COMMON块的名称,X、Y和Z是要共享的变量名。可以在其他程序或模块中使用相同的COMMON块名称来访问这些变量。例如:
```
PROGRAM MAIN
COMMON /MYBLOCK/ X, Y, Z
...
END PROGRAM
SUBROUTINE SUB1
COMMON /MYBLOCK/ X, Y, Z
...
END SUBROUTINE
SUBROUTINE SUB2
COMMON /MYBLOCK/ X, Y, Z
...
END SUBROUTINE
```
在这个例子中,程序MAIN和子程序SUB1和SUB2都可以访问COMMON块中的变量X、Y和Z。注意,所有使用COMMON块的程序和子程序必须以相同的COMMON块名称和相同的变量名来声明和访问变量,否则它们将无法共享变量。
相关问题
Fortran中common与real
在Fortran中,`common`是一种语言构造,用于定义在一个程序中多个子程序之间共享的内存块。`common`关键字后面需要指定一个名称,然后在子程序中使用`common`语句来声明这个名称所代表的内存块。
例如,下面的代码定义了一个名为`my_vars`的`common`块,并在两个子程序中使用它:
```
common /my_vars/ x, y, z
subroutine sub1
x = 1
y = 2
z = 3
end subroutine
subroutine sub2
print *, x, y, z
end subroutine
```
在这个例子中,三个变量`x`、`y`和`z`都被定义在`my_vars`这个`common`块中。在`sub1`子程序中,它们被赋值为1、2和3,在`sub2`子程序中被打印出来。
而`real`是Fortran中的一种数据类型,用于表示实数。`real`变量可以声明为单精度(`real`)或双精度(`double precision`)。
例如,下面的代码声明了一个单精度实数变量`x`和一个双精度实数变量`y`:
```
real :: x
double precision :: y
```
在使用`real`变量时,需要注意它们可能会出现舍入误差的问题。为了避免这个问题,可以使用Fortran中的高精度数值处理库,如`mpreal`。
Fortran中common 定义数组
在Fortran中,COMMON块可以用于定义共享数组。共享数组的声明方式和普通变量类似,只需要在COMMON块中将数组名和其维数一起声明即可。例如,下面的代码定义了一个名为/mycommon/的COMMON块,其中包含了一个大小为10的实数数组a:
```
COMMON /mycommon/ a(10)
```
在程序中,可以在任何子程序中使用这个数组,而不需要进行额外的传递参数。例如,可以在一个子程序中修改数组a的某个元素,然后在另一个子程序中读取修改后的值。需要注意的是,COMMON块中的数组必须在所有使用它们的子程序中都被声明,并且维数必须相同,否则会出现编译错误。
阅读全文