C语言特性(局部变量和全局变量)

局部变量和全局变量

局部变量

局部变量根据定义形式的不同,又分为如下三种。

1.形参:在定义函数签名时定义的变量,形参的作用域实在整个函数内有效。
2.函数局部变量:在函数体内定义的局部变量,它的作用域是从定义该变量到函数结束。
3.代码块局部变量:在代码块中定义的局部变量,这个局部变量的作用域是从定义到该代码块结束。

全局变量

在一个函数内部,如果全局变量和局部变量同名,那么局部变量将会覆盖全局变量,意味着在该函数内部,全局变量会失效。

    如果在源程序的结尾部分定义全局变量,又希望在前面的各函数中使用的这些全局变量,这就需要在这些函数中
声明全局变量。声明全局变量使用extern关键字,语法格式如下:
    extern 类型 全局变量名;

外部全局变量与内部全局变量

    事实上,C语言允许访问其他源程序中定义的全局变量,允许被其他源程序访问的全局变量被称为外部全局变量。
    如果希望全局变量的作用域限制在该源程序内部,则可使用static修饰该全局变量,这样就可以避免其他源程
序访问或修改该全局变量。这样的全局变量被称为内部全局变量。

动态存储与静态存储

动态存储:程序在运行期间根据需要动态分配内存的存储方式。
静态存储:程序在运行开始就分配固定内存的存储方式。

静态存储区会存放如下两类变量
1.全局变量:无论是内部全局变量,还是外部全局变量,他们都被保存在静态存储区内。
2.static修饰的局部变量。
动态存储区主要存放如下三类变量
1.函数的形参变量。
2.static修饰的局部变量。
3.函数执行的现场数据以及返回地址等。

为了指定变量的存储类别,可以在定义变量时指定存储类别。C语言支持如下几种存储类别

auto:指定该变量采用自动存储机制。局部变量默认采用这种存储机制。
static:指定将局部变量存放到静态存储区。这样该变量所占用的空间将会一直保存,知道程序退出。
register:指定将该变量存放到寄存器内。
extern:用于声明外部变量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值