
不行的,我以前用过的传递方法有两种,一种就是你说的括号里带变量名的传递方式,另外一种是定义公共模块管理全局变量,例如
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
大致用法应该是这样,你试试
这是因为你在子程序中又调用了子程序本身(Call 选区()),这是递归调用,当调用结束时,它并不是直接退出子程序的,而是返回到上一次调用结束的位置,也就是call 选区()后面的语句继续执行,这也就意味着这种嵌套调用,在退出时也是要一层层解套的。
所以这种情况是不适用递归调用的,应该用goto语句跳转到do的前面去再次执行循环。
当然执意用Call 选区()也是可以的,那就在下面加一句Exit Do即可(但本人不建议)。
楼主去看一下书上面,对这两条语句的定义。return是用来对一个函数进行返回,它是基本语句。而exit(0)本身是一个带有一个参数的函数,用来表示这个程序已经结束。之所以你查绝不到他们的区别,是因为这两条语句在main函数里面产生的表面效果是一样的,都是终止了这个程序(但是实质是不同的)。还有,如果在其它函数里面分别加入这两条语句(在这个函数运行完不会导致程序结束的情况下),它们是不同的。楼主亲自去测试一下吧,印象更加深刻。纯手机打字,希望对你有帮助
以上就是关于那编了个子程序 为什么子程序的值没有办法返回到主程序呢全部的内容,包括:那编了个子程序 为什么子程序的值没有办法返回到主程序呢、按键精灵怎么退不出子程序 最后又跳到判断了、return 跟 exit(0) 有什么区别,什么情况下使用。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)