美文网首页
C语言特性(局部变量和全局变量)

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

作者: JackLu经纬 | 来源:发表于2015-12-22 15:16 被阅读0次

局部变量和全局变量

局部变量

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

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

全局变量

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

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

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

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

动态存储与静态存储

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

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

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

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

相关文章

  • 03-Golang局部变量和全局变量

    局部变量 在C语言中写在{}中或者函数中或者函数的形参, 就是局部变量 Go语言中的局部变量和C语言一样 全局变量...

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

    局部变量和全局变量 局部变量 局部变量根据定义形式的不同,又分为如下三种。 全局变量 在一个函数内部,如果全局变量...

  • C++ 语言基础

    C++ 语言基础 1. 局部变量和全局变量能否重名? 局部变量是定义在函数内部的变量。全局变量是定义在函数之外的变...

  • static和extern关键字

    static和extern对变量的作用 C语言里的变量分两种:全局变量和局部变量。全局变量又分为外部全局变量和内部...

  • C学习:04内存四区及变量

    变量介绍 C中分全局变量和代码块中的局部变量.static可以修饰全局变量和局部变量以及方法.C中的方法名不同文件...

  • 2019-03-12 计算机二级C语言程序设计之C语言中用户标识

    参考资料:高教版《全国计算机等级考试二级教程——C语言程序设计》、《21天学通C语言》 局部变量、全局变量和存储分...

  • 局部变量和全局变量

    什么是局部变量? 在Go语言和C语言中写在{}中或者函数中或者函数的形参, 就是局部变量 什么是全局变量? 在Go...

  • 全局变量&局部变量

    var a; //全局变量 function test(){ var b; //局部变量 c; //全局变量 }

  • C++面试考点总结

    static作用是什么?在C和C++中有何区别? static可以修饰局部变量(静态局部变量)、全局变量(静态全局...

  • 嵌入式第八天:函数

    本篇文章分为三个部分讲解,分别为函数、局部变量和全局变量、c语言存储分区欢迎加入嵌入式学习群:559601187 ...

网友评论

      本文标题:C语言特性(局部变量和全局变量)

      本文链接:https://www.haomeiwen.com/subject/roamhttx.html