回 帖 发 新 帖 刷新版面

主题:请问一个与变量的存储属性相关的问题,谢谢大大,

program datas_test
do i=1,10
  write(*,*)i,f()
end do
end 

function f()
static n,s
n=n+1
s=s+n
f=s
end

我想问下这程序怎么运行的, 子程序F()中的变量是怎么赋值的,还有,变量的存储属性,SAVE,STATIC  AUTOMATIC他们的区别究竟在哪里啊,能用简单的例子说明吗,谢谢哦,

回复列表 (共2个回复)

沙发

程序刚开始自动给N和S赋初值0。
STATIC和SAVE使用静态存储,即使子程序执行完毕后,变量得以保存,比如执行一次之后n变为1就保存下来了。
AUTOMATIC是使用堆栈存储,子程序执行完毕后,变量不保存,减少内存使用。

板凳


[em1]谢谢哦,

我来回复

您尚未登录,请登录后再回复。点此登录或注册