fortran 全局变量
时间: 2023-06-19 09:34:40 浏览: 129
Fortran 中的全局变量可以通过在程序中定义它们来实现。在 Fortran 中,程序中的每个子程序都可以访问定义在程序主体中的变量,这些变量被称为全局变量。
在程序主体中定义全局变量的语法如下:
```
PROGRAM program_name
IMPLICIT NONE
! 声明全局变量
INTEGER :: global_var
! 程序主体
END PROGRAM program_name
```
在上面的代码中,我们定义了一个名为 `global_var` 的整数类型的全局变量。在程序主体中,我们可以访问这个变量,并且这个变量的值可以在各个子程序之间共享。
如果需要在不同的 Fortran 文件中使用全局变量,则需要在这些文件中使用 `COMMON` 语句来声明全局变量,如下所示:
```
COMMON /block_name/ global_var
```
在上面的代码中,`block_name` 是一个区块名称,用于标识这个全局变量块,`global_var` 是全局变量的名称。在其他文件中,可以通过使用相同的区块名称来访问这个全局变量。
相关问题
fortran全局变量
在Fortran中,全局变量是通过使用COMMON语句来定义的。COMMON语句用于定义一块共享的内存空间,其中包含了多个全局变量。每个想要使用这些全局变量的子程序都需要在其本地变量定义的位置重新定义所有的全局变量。每个COMMON块都应有一个唯一的名字,并且在可执行语句之前出现。全局变量的名字可以不同,但是它们的数据类型和大小必须相同,并且位置也必须相同。通常最好将全局变量的名字保持一致,这样可以方便复制和粘贴。此外,COMMON块还可以包含数组变量。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Fortran笔记,全局变量](https://blog.csdn.net/qq_21091051/article/details/122994239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Fortran的全局变量(Common blocks)](https://blog.csdn.net/qq_42926901/article/details/123103622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
fortran module
Fortran Module是一个独立的可重用代码单元,它可以包含变量、常数、函数和子程序等。模块可以被其他程序调用和使用,从而提高代码的可重用性和可维护性。
在Fortran中,模块的定义通常包括以下几个部分:
1. 模块的名称和头部声明:使用MODULE关键字定义模块名称,并在模块头部声明需要使用的变量和子程序等。
2. 全局变量和常量声明:在模块中定义需要在整个程序中使用的全局变量和常量。
3. 子程序和函数定义:在模块中定义需要在整个程序中使用的子程序和函数。
4. END MODULE语句:表示模块定义结束。
下面是一个简单的Fortran模块的例子:
```
MODULE mymodule
IMPLICIT NONE
INTEGER :: a, b, c
CONTAINS
SUBROUTINE mysubroutine(x, y, z)
INTEGER, INTENT(IN) :: x, y
INTEGER, INTENT(OUT) :: z
z = x + y
END SUBROUTINE mysubroutine
FUNCTION myfunction(x, y)
INTEGER, INTENT(IN) :: x, y
INTEGER :: myfunction
myfunction = x * y
END FUNCTION myfunction
END MODULE mymodule
```
在这个例子中,我们定义了一个名为mymodule的模块,其中包含了三个全局变量a、b和c,以及一个子程序mysubroutine和一个函数myfunction。这些变量、子程序和函数可以被其他程序调用和使用。