初识static局部变量(二)

书接上文,现在又碰上了static局部变量的另外一个案例,还是拿之前的代码做比较,源代码修改为

void add()
{
    static int aa=0;

    if(aa==0)
    {
        aa=1;
        printf("aa的值赋值为1\n");
    }
    else
    {
        aa++;
        printf("aa=%d\n",aa);
    }
}

这个源代码还是定义了一个int类型的static变量,只不过多了a++的步骤,我们使用main继续调用三次

int main()
{
    add();
    add();
    add();
}

然后运行一下看看这次结果:

这次aa的也是不一样,而且一直都是累加,每次加1,上个案例说由于aa是静态局部变量,所以aa只能初始化一次,所以第二次第三次调用aa的值一直保持1不变,但是这个案例aa的值为什么一直在累加呢?

这次还是因为aa是静态局部变量,因为这句话还有下半句,static局部变量只被初始化一次,下一次依据上一次结果值。这样就可以解释得通了,aa的值初始化为1后,下一次调用拿上一次的结果还是为1,执行++操作后,aa的值就修改为2了,这也是aa为什么等于2的原因,同理,执行第三次时,aa还是拿第二次的结果,aa=2,执行++操作后,aa的值就修改为3了。

是不是很神奇,我现在能感觉一点编程的奇妙之处了,与君共勉!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值