全局变量、静态本地变量、返回指针的函数

1.全局变量

  • 定义在函数外部的变量是全局变量
    • 全局变量具有全局的生存期和作用域
    • 他们和任何函数都无关
    • 在任何函数内部都可以使用他们
  • 没有做初始化的全局变量会默认为0值,指针会默认为NULL值
    • 只能用编译时刻已知的值来初始化全局变量
    • 他们的初始化发生在main函数之前
  • 如果函数内部存在与全局变量同名的变量,则全局变量被隐藏(就近原则)

  

 2. 静态本地变量

  

  •  在本地变量定义时加上static修饰符,如static int i; 则i就成为静态本地变量
    • 函数调用结束时,静态本地变量会继续存在并保存其值
    • 后续同一个函数继续调用时,静态本地变量会延续上一次调用的最终值
    • 静态本地变量的初始化只会在第一次进入这个函数时做

  

  •  静态本地变量实际上是特殊的全局变量,他们位于相同的内存区域
  •  静态本地变量具有:全局生存期,局部作用域

 3. 返回指针的函数

   返回本地变量的地址是危险的,函数调用后本地变量的地址还在,但是里面的值可能变了,如:

  

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

  建议:

  

 

posted @ 2023-08-16 11:44  园友3218619  阅读(45)  评论(6)    收藏  举报