关于static关键字的注意事项

一.static修饰全局变量:

1.修饰全局变量时:该变量只在本文件内访问,不能被外部文件直接访问。

2.修饰全局变量时:该变量的作用域改变了,但是变量的生命周期不会改(从定义到结束时都不会被释放)

例如:在test.c内创建一个static修饰的变量,在本文件内才可以使用该变量(作用域改变:从整个工程的作用域变成了本文件内部),并且此时生命周期还是全局生命周期(生命周期不变)。

二.static修饰局部变量:

修饰局部变量时:该变量作用域不变(还是在变量所在的代码块内起作用,即花括号{}内部),但是其生命周期改变了(由临时变量周期变成了全局生命周期)。

例如:static修不修饰局部变量,函数调用完后,该变量出了函数的代码块,就不起作用了,函数外部检测不到的该变量,作用域还是没变的。因为函数调用完后,就会销毁函数内部的数据。

但是若是static修饰了该变量,就会延长该变量的生命周期(即该变量的值还保留在内存中,如果下次调用该函数时,此变量在函数内部的值还是之前的值,变量的值不会被释放)。

注意:理解生命周期和作用域,两者并不是一个意思。

生命周期:是指从定义变量到变量失去作用结束被释放的过程的时间。

作用域:是指在变量定义完,并且能起作用,能被使用的一定区域。

三.static修饰函数:

static修饰函数时:该函数也只能在本文件内访问,在本文件内部可以调用该函数。不能被外部其他文杰直接访问,但是可以间接访问,在外部调用其他的函数,该函数定义在static修饰的那个函数的文件内,此时就相当于在本文件内了,可以访问static修饰的函数了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值