全局变量和静态本地变量

变量生存期作用域
本地变量局部局部
静态本地变量局部全局
全局变量全局全局

本地变量

定义: 函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量,也称局部变量

  • 本地变量可以定义在块内,也可以定义在语句内,甚至可以用一对大括号来定义;
  • 程序运行进入这个块之前变量不存在,离开该函数或者代码块本地变量就消失了 ;

静态本地变量

定义:在本地变量定义时加上 static 修饰符就成了静态本地变量

  • 静态本地变量是一种特殊的全局变量,它们位于相同的内存区域;
  • 静态本地变量具有全局生存期,函数内的局部作用域;
  • 当函数离开的时候,静态本地变量会继续存在并保存其值;
  • 静态本地变量的初始化只会在第一次进入这个函数时做,以后进入函数时会保存上次离开时的值;
  • static 在这里的意思时局部作用域(本地可访问);

静态本地变量可以在函数内部定义,但全局变量开头就要定义


全局变量

定义:定义在函数外部的变量就是全局变量

  • 全局变量具有全局的生存期和作用域;
  • 它们与任何函数都无关,在任何函数内部都可以使用它们

全局变量初始化:

  1. 没有做初始化的全局变量会得到0值;
  2. 指针会得到NULL值;
  3. 只能用编译时刻已知的值来初始化全局变量;
  4. 全局变量的初始化发生在main函数之前;
  • 如果函数内部存在与全局变量同名的变量,则全局变量被隐藏;

* 返回指针的函数

  • 返回本地变量的地址是危险的(因为离开函数后本地变量就不存在了);
  • 返回全局变量或静态本地变量的地址是安全的
  • 返回在函数内malloc的内存是安全的,但是容易造成问题;
  • 最好的做法是返回传入的指针;
  1. 不要使用全局变量来在函数间传递参数和结果;
  2. 尽量避免使用全局变量
  3. 使用全局变量和静态本地变量的函数时线程不安全的;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苗半里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值