那编了个子程序 为什么子程序的值没有办法返回到主程序呢

2024-12-18 00:58:05
推荐回答(2个)
回答1:

不行的,我以前用过的传递方法有两种,一种就是你说的括号里带变量名的传递方式,另外一种是定义公共模块管理全局变量,例如
module common_module
implicit none
real :: var1, var2
end module

然后在主程序和子程序中都使用这个模块,则子程序中的变量的值就会带入主程序中,例如

subroutine sub1()
use common_module % 使用公共模块
implicit none
var1=1 % 给全局变量赋值
var2=2
end subroutine

program main
use common_module
implicit none
var1=0
var2=0
write(*,*) var1, var2 % 调用子程序前的值
call sub1 % 调用子程序sub1,var1,var2重新赋值
write(*,*) var1, var2 %由于var1作为全局变量使用,var1在子程序中更改,这里是改变后的值
end program

大致用法应该是这样,你试试

回答2:

什么语言呀?
用全局变量,在子程序中赋值,是否可以?