• C语言进阶——全局变量


     

    全局变量

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

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

      ·它们与任何函数都无关

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

     

    全局变量初始化

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

      ·指针会得到NULL值

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

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

     

    被隐藏的全局变量

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

    静态本地变量-1

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

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

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

    静态本地变量-2

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

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

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

    *返回指针的函数

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

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

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

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

    tips

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

    ·尽量避免使用全局变量

      ·丰田汽车的案子

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

     

  • 相关阅读:
    server 2012 r2 配置
    在线流媒体nginx/Windows解决方案
    ECS上配置FTP Filezilla
    新项目扫雷专贴 备忘录
    如何解决 Windows 实例出现身份验证错误及更正 CredSSP
    win10 再次重装系统
    SAI窗口无法移动
    无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支
    遇到技嘉 Gigabyte UEFI DualBIOS问题
    dnsunlocker解决
  • 原文地址:https://www.cnblogs.com/tqing/p/10821477.html
Copyright © 2020-2023  润新知