fortran子例程的变量初始化

(1)对于字符串变量,每次调用时都要重新初始化,否则保留上一次的结果。

subroutine sub1
    character(len=80) :: str1

    str1 = 'abc'                         ! necessary

    ....
    if (condition) str1 = 'cba'
    ...
    if(str1(1:3)=='cba') ...
    ...
end

program main
    ...
    do i=1, n
    ...
      call sub1
    ...
    end do
end

如果没有那步初始化,而且str1赋值了'cba‘,下一次调用不管condition是否成立,第二个if都肯定成立。

----------------------------------------------------------------------------------------------------------------------------------------

(2)intent(out)该声明并不能阻止数据的传递

subroutine sub1(f)
    real, intent(out) :: f
    ...
    f = 0.                    !necessary
    ...
    f = f + 1
end

program main
    ...
    do i = 1, n
        call sub1(f)
    end do
end

如果f没有初始化,就变成了f的累加

转载于:https://www.cnblogs.com/panos/archive/2013/01/20/2868382.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值