zoukankan      html  css  js  c++  java
  • C语言进阶——全局变量

     

    全局变量

    ·定义在函数外面的变量是全局变量

    ·全局变量具有全局的生存期和作用域

      ·它们与任何函数都无关

      ·在任何函数内部都可以使用它们

     

    全局变量初始化

    ·没有做初始化的全局变量会得到0值

      ·指针会得到NULL值

    ·只能用编译时刻已知的值来初始化全局变量

    ·它们的初始化发生在main函数之前

     

    被隐藏的全局变量

    ·如果函数内部存在与全局变量同名的变量,则全局变量被隐藏

    静态本地变量-1

    ·在本地变量定义是加上static修饰符就成为静态本地变量

    ·当函数离开的时候,静态本地变量会继续存在并保持其值

    ·静态本地变量的初始化只会在第一次进入这个函数做,以后进入函数时会保持上次离开时的值

    静态本地变量-2

    ·静态本地变量实际上是特殊的全局变量

    ·它们位于相同的内存区域

    ·静态本地变量具有全局的生存期,函数内的局部作用域

    *返回指针的函数

    ·返回本地变量的地址是危险的(每次离开后,本地变量分配的内存被释放,下次重新进入某函数时,又重新分配内存给本地变量)

    ·返回全局变量或静态本地变量的地址是安全的

    ·返回在函数内malloc的内存是安全的,但是容易造成问题

    ·以上的方法都不建议,最好的做法就是返回传入的指针

    tips

    ·不要使用全局变量来在函数间传递参数和结果

    ·尽量避免使用全局变量

      ·丰田汽车的案子

    · *使用全局变量和静态本地变量的函数是线程不安全的

     

  • 相关阅读:
    JavaScript的语法、数据类型、基本算数和逻辑运算操作
    ES6之常用开发知识点:入门(一)
    ES6中map数据结构
    VUE路径问题

    JS简易计算器的实现,以及代码的优化
    格雷编码
    H5网页布局+css代码美化
    jQuery---五角星评分案例
    Ajax工作原理及优缺点
  • 原文地址:https://www.cnblogs.com/tqing/p/10821477.html
Copyright © 2011-2022 走看看