在Fortran中,子程序的保存通常通过以下两种方式进行:
使用`save`关键字
在子程序或函数中添加`save`关键字,这样可以在子程序执行期间保留变量的值,即使子程序执行结束后,这些变量的值也不会丢失。
示例代码如下:
```fortran
Program testsave
implicit none
integer :: i, n = 10
do i = 1, n
call sub(i)
end do
End program testsave
Subroutine sub(a)
implicit none
integer :: a
real, save :: s
s = s + a
print*, s
End subroutine sub
```
在这个例子中,变量`s`在子程序`sub`中被声明为`save`,因此它的值在连续的函数调用中会保持累加。
在过程中声明的同时赋初值
在子程序中声明变量时直接赋初值,这样每次调用子程序时,变量都会被初始化为指定的值。
示例代码如下:
```fortran
Program testsave
implicit none
integer :: i, n = 10
do i = 1, n
call sub(i)
end do
End program testsave
Subroutine sub(a)
implicit none
integer :: a
real :: s = 0.0
s = s + a
print*, s
End subroutine sub
```
在这个例子中,变量`s`在每次调用子程序`sub`时都会被初始化为0.0,然后累加传入的参数`a`。
建议
如果需要在子程序执行期间保持变量的值,建议使用`save`关键字。
如果变量在每次调用子程序时都需要重新初始化,建议在使用声明的同时赋初值的方法。
希望这些信息对你有所帮助。