全局变量与局部变量

目录

局部变量和全局变量

标识符的作用域与可见性问题

作用域

可见性

空间角度和时间角度看局部变量以及全局变量

空间角度

时间角度

存储类别的关键字

auto

static

register

extern


局部变量和全局变量

标识符的作用域与可见性问题

作用域

(名字作用的访问)

局部作用域:{}花括号范围内,就叫局部作用域。

全局作用域:不在任何一个花括号{}发范围内。

局部变量—在局部作用域定义的变量;

全局变量—在全局作用域定义的变量;

可见性

(程序运行到某一个位置,哪些名字可以被使用(被看见))

标识符的可见性规则:

1.先定义,后使用;

2.在同一作用域中,不能有同名标识符;

3.在不同作用域,同名标识符,相互之间没有影响;

4.如果是不同的作用域,但是作用域之间存在嵌套关系,则内层作用域的同名标识符会屏蔽外层作用域的同名标识符(就近原则

空间角度和时间角度看局部变量以及全局变量

空间角度

局部变量特点:

局部变量空间一般都在开栈上,如果不初始化局部变量,局部变量中的值是随机值(垃圾值);

全局变量特点:

全局变量空间在全局区,如果不初始化全局变量,全局变量的值默认初始化为0;

时间角度

生命周期可以理解为定义了int a什么时候a的空间被开辟,什么时候a的空间被销毁

局部变量的生命周期:

从程序运行到定义处开始存在,到程序运行到它作用的范围结束时销毁;

全局变量(静态变量)的生命周期:

从程序运行时就存在了,直到整个程序运行结束时销毁;

注意:全局变量和静态变量,不能用“变量”进行初始化

存储类别的关键字

形式:[存储类别] 类型 变量名

auto

自动变量(局部变量),自动申请,自动释放

static

static修饰局部变量:

此时会被放在全局区(静态区),延长生命周期

注意:

1.static修饰局部变量,只会被初始化一次;

2.static修饰的变量具有继承性;

3.static修饰的变量只能用常量初始化(不能用变量初始化)

static修饰全局变量:

限定全局变量的作用域为本文件,别的文件不能通过extern来声明使用;

static修饰函数:

限定作用域为本文件,别的文件不能通过extern来声明使用;

register

(寄存器)表示把变量存储到寄存器中;

register修饰的变量,不能做&(取地址);

extern

(外部的)表示变量或数据存在外部的,不在当前文件中,只能声明全局变量;

编译时需要与定义全局变量的文件一起编译;

用途:保护私有数据,防止被引用

  • 34
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值