变量存储类别

Posted focusonoutput

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量存储类别相关的知识,希望对你有一定的参考价值。

C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。

  • 静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。
  • 动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。

语言中存储类别又分为四类:

  • 自动(auto)、
  • 静态(static)、
  • 寄存器的(register)
  • 外部的(extern)。

 

1、用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式.

2 用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。如下为静态局部变量:

技术图片

 

 注意:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;

如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。

4、用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。如:

技术图片

 

 

内部函数与外部函数(?)

    • 在C语言中不能被其他源文件调用的函数称谓内部函数 ,内部函数由static关键字来定义,因此又被称谓静态函数,形式为:
      static [数据类型] 函数名([参数])
    • 这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。
    • 在C语言中能被其他源文件调用的函数称谓外部函数 ,外部函数由extern关键字来定义,形式为:
      extern [数据类型] 函数名([参数])
    • C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。

以上是关于变量存储类别的主要内容,如果未能解决你的问题,请参考以下文章

局部变量的存储类别--自动变量与静态局部变量

变量的存储类别

C语言杂谈存储类别

全局局部变量,数据的存储类别

与变量存储类别相关的C关键字

与变量存储类别相关的C关键字