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

来源:互联网 发布:淘宝赠运费险什么意思 编辑:程序博客网 时间:2024/05/14 06:52

局部变量和全局变量

局部变量

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

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

全局变量

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

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

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

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

动态存储与静态存储

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

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

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

auto:指定该变量采用自动存储机制。局部变量默认采用这种存储机制。static:指定将局部变量存放到静态存储区。这样该变量所占用的空间将会一直保存,知道程序退出。register:指定将该变量存放到寄存器内。extern:用于声明外部变量。
0 0
原创粉丝点击