Fortran中common
时间: 2024-03-27 18:40:40 浏览: 20
在Fortran中,COMMON语句用于定义一组在程序中多个子程序之间共享的变量。这些变量在COMMON块中声明,并且可以在任何一个子程序中使用。COMMON块中的变量可以是任何数据类型,包括实数、整数、逻辑和字符类型。
COMMON块的语法如下:
```
COMMON /blockname/ var1, var2, ..., varn
```
其中,blockname是COMMON块的名称,var1, var2, ..., varn是需要共享的变量名。
例如,下面的代码定义了一个名为/mycommon/的COMMON块,其中包含了三个实数变量a、b和c:
```
COMMON /mycommon/ a, b, c
```
在程序中,可以在任何子程序中使用这些变量,而不需要进行额外的传递参数。例如,可以在一个子程序中修改变量a,然后在另一个子程序中读取修改后的值。需要注意的是,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块中的数组必须在所有使用它们的子程序中都被声明,并且维数必须相同,否则会出现编译错误。