那编了个子程序 为什么子程序的值没有办法返回到主程序呢
就是不用形参传递的那种subroutine子程序名如果不带后面的括号不是可以将子程序中用到的变量什么的全部返回到主程序吗...
就是不用形参传递的那种 subroutine 子程序名 如果不带后面的括号 不是可以将子程序中用到的变量什么的 全部返回到主程序吗
展开
展开全部
不行的,我以前用过的传递方法有两种,一种就是你说的括号里带变量名的传递方式,另外一种是定义公共模块管理全局变量,例如
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
大致用法应该是这样,你试试
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
大致用法应该是这样,你试试
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询