美文网首页
静态变量,全局变量(外部变量),局部变量一些对比

静态变量,全局变量(外部变量),局部变量一些对比

作者: FakeCSer爱去网吧 | 来源:发表于2020-10-09 15:42 被阅读0次

本文整理于多个博客如https://blog.csdn.net/weixin_43222324/article/details/106989714

首先,对比这些变量的不同,最重要的是两个方面,一个是作用域一个是生命周期


静态变量和动态变量对比

静态变量和动态变量(自动变量)---是从变量的内存分配的角度(生命周期)划分。

  • 静态变量:
    1. 存在静态存储区,分配一次空间,在程序的整个运行期间内都不释放空间。
    2. 编译时赋初始值,只赋一次初值,在以后每次调用函数时,都不再重新为其赋值,只是使用上一次函数被调用结束时变量的值。
    3. 未赋初值的话,编译器给赋值为0.
  • 动态变量(自动变量):
    1. 存在动态存储区(栈)上,即局部变量,函数调用结束后存储单元即被释放。
    2. 而自动局部变量的初值不是在编译时赋予的,而是在函数调用时赋予的,每调用一次,函数都对变量重新赋一次初值。
    3. 如果不赋值,则变量的值是一个不确定的值。

全局变量和局部变量对比

全局变量和局部变量---是从变量的作用域的角度划分。

  • 全局变量(外部变量):

    1. 作用域为整个工程
    2. 存储在静态存储区(这点与静态变量相同)
    3. 此处引入外部变量(extern关键字):extern主要针对具有多个源文件的项目。如果有多个源文件需要使用到相同的全局变量,则这些变量只需要在其中的某一个源文件中定义一次,其它的源文件如果想使用这些外部变量,需要在声明的时候前面加上"extern"。
  • 局部变量:

    1. 作用域为当前程序块
    2. 存储在栈区(非静态局部变量就是自动变量)

优先使用局部变量再使用全局变量:局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。


静态局部变量和静态全局变量

  • 静态全局变量
    把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。并不是说全局变量在定义时加了static关键字才是静态存储,不加static就是动态存储,不是的。不管加不加static,全局变量都是存储在静态存储区的,都是在编译时分配存储空间的,两者只是作用域不同,全局变量默认具有外部链接性,作用域是整个工程,全局静态变量的作用域仅限本文件,不能在其他文件中引用

  • 静态局部变量
    把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。但是作用域还是在原来的函数体内可以使用

总结:把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。


最后总结一个表格


相关文章

  • 关于block的所有问题

    关于block捕获外部的变量 (1)局部变量(2)静态变量(3)全局变量(4)全局静态变量(6)block捕获外边...

  • Block捕获变量

    block捕获的变量 局部变量 静态局部变量 全局变量 静态全局变量 函数执行部分 总结 局部变量基本数据类型:捕...

  • php函数

    局部变量---动态变量 局部变量---静态变量 全局变量---global 全局变量---GLOBALS PHP传...

  • 关于JS中的作用域链

    1. 全局变量与局部变量 全局变量:定义在函数外部的变量可以被叫做全局变量局部变量:定义在函数内部的变量,但是如果...

  • 编程中的局部变量,全局变量,静态变量

    关于局部变量、全局变量与静态全局变量和静态局部变量的比较与分析和拓展: 首先要明白的是局部变量与其它三个有本质区别...

  • 静态变量,全局变量(外部变量),局部变量一些对比

    本文整理于多个博客如https://blog.csdn.net/weixin_43222324/article/d...

  • block对外部变量的管理之探索

    数据类型如下 局部变量 静态变量 全局变量 blcok变量 下面是code 局部变量 打印结果 静态常量 打印结果...

  • 2018-11-12

    全局变量和局部变量 JS函数内部可以直接读取全局变量 但函数外部无法读取函数内部的局部变量 从外部读取函数内部的 ...

  • 第10天C语言(00):笔记总结

    01-全局变量和局部变量-基本概念 02-内部全局变量和外部全局变量 03-static对局部变量-作用 04-s...

  • 9/25

    今天老师讲了结构体的一些知识,解释了全局变量、局部变量和静态局部变量的区别。static定义静态变量,在定义中运行...

网友评论

      本文标题:静态变量,全局变量(外部变量),局部变量一些对比

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