变量的作用域和存储方式

按作用域可分为

局部变量:函数级局部变量,复合语句级局部变量,这种类型的变量在本函数或本复合语句内有效,在其他范围内无效。

全局变量:在函数外定义,从定义开始到本文件结束有效。

按存储方式可分为

静态存储区存储:全局变量和static局部变量全部存放在静态存储区,从定义开始占用内存一直到本文件结束释放内存,存放在静态存储区的局部变量并不随着局部程序的结束而被释放,但是其他函数或复合语句也不能引用。存放在静态存储区的变量不赋初值则自动为0,全局变量和静态变量的初值是在编译时指定的;

动态存储区存储:如一些不加static的局部变量均存放在动态存储区,这些变量随着定义而开始,随着局部程序的结束而被释放,下次执行再次重新定义。存放在静态存储区的变量不赋初值初值不确定;

关于extern和static的说明:extern可以扩展全局变量的范围,而static则可以限制这种扩展;extern只是声明一个变量,并不会再次分配存储空间。
如:在f1文件中定义的全局变量a,在f2中使用这个变量需要extern a;在f1文件中如果定义static的全局变量a,其他文件就无法使用了;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值