关于C语言变量存储类型和生存期

发布时间 2023-05-17 10:07:21作者: 风中凌乱的猪头

1、局部变量和全局变量

  1、局部变量   在函数的开头定义;在函数的复合语句内定义;在函数的外部定义。

  2、全局变量  在函数之外定义的变量是外部变量,外部变量就是全局变量(增加了函数数据联系)

  3、当全局变量和局部变量同名,在局部变量的作用范围内,局部变量有效,全局变量被屏蔽

2、变量的存储类型和生存期

  1、自动变量(auto):函数中的局部变量,如果不专门用static存储类别,都是动态的分配存储空间,存储在动态存储区中,定义时auto可以不写。(离开函数,值就消失)

  2、静态局部变量(static):有的局部变量的值在函数调用结束后不消失儿继续保留原值,占用存储单元不释放,在下次调用变量时,改变量已有值,,存储在静态存储区中(离开函数,值仍保留)

  3、寄存器变量(register):提高执行效率,存储在寄存器中(离开函数,值就消失)

  4、全局变量:都存放在静态存储区中,作用范围:

    1、在一个文件内扩展外部变量的作用域(非静态的外部变量,允许其他文件使用)

    2、将外部变量的作用扩展到其他文件(非静态的外部变量,允许其他文件使用)

    3、将外部变量的作用限制在本文件中(static) 静态外部变量 (只限本文件使用)

        static:局部变量:存储在静态存储区中,变量在整个程序执行期间不释放,其所分配的空间始终存在

           全局变量:作用域只限于本文件模块。