变量的作用域与储存类别

目录

1.变量有两个属性,一个是数据类型,一个是储存类别

2.储存类别又可以按照作用域和生存周期分为局部变量和全局变量,静态变量和动态变量

3.作用域

        1.局部变量

定义:在函数内部定义的变量

作用域:他只能在定义他的大括号内使用,不能渗透到大括号外

        2.全局变量

定义:在函数外部定义的变量叫做全局变量,也叫外部变量

作用域:从定义到源文件结束

优点:一个函数将值放入全局变量,其他函数都可以使用,增加了函数之间的联系

缺点:

4.生存周期

1.内存区域的划分

1.代码区:存储函数的名字

2.静态存储区(零区,非零区):全局变量,局部静态变量

3.动态存储区(堆区,栈区):局部变量,函数形参,临时变量

2.局部变量

1.局部自动变量

2.局部静态变量(static)

3.寄存器变量(register)

3.全局变量

1.一般全局变量(程序级)(可以通过extern拓展到别的源文件中使用)

2.静态全局变量(static限制全局变量只可以在本源文件中使用)


1.变量有两个属性,一个是数据类型,一个是储存类别

2.储存类别又可以按照作用域和生存周期分为局部变量和全局变量,静态变量和动态变量

3.作用域

        1.局部变量

定义:在函数内部定义的变量

作用域:他只能在定义他的大括号内使用,不能渗透到大括号外

  • 注:
  • 在函数体开头定义的,在本函数内有效
  • 在复合语句中定义的。则只在复合语句中有效
  • 函数参数和函数开头定义的变量作用域相同
  • 不同函数中定义的局部变量可以同名,但不是同一个变量,在内存中也占据不同的单元
  • 形参也是局部变量

        2.全局变量

定义:在函数外部定义的变量叫做全局变量,也叫外部变量

作用域:从定义到源文件结束

优点:一个函数将值放入全局变量,其他函数都可以使用,增加了函数之间的联系

缺点:

  • 占用内存时间长

函数之间相互影响,增加了函数之间的耦合性

注:

  • 全局变量的作用域可以拓展(通过 extern在本源文件中向前拓展,通过extern向另一个源文件拓展,通过加上static不让其他的源文件使用)
  • 提供了一个公共场所,便于函数之间的交换数据(比如主调函数需要被调函数提供两个以上的返回值,函数只有一个返回值)

4.生存周期

1.内存区域的划分

一个程序所占的空间

1.代码区:存储函数的名字

2.静态存储区(零区,非零区):全局变量,局部静态变量

3.动态存储区(堆区,栈区):局部变量,函数形参,临时变量

2.局部变量

1.局部自动变量

局部自动变量可以放在内存中,也可以放在寄存器中,放在寄存其中,就叫做寄存器变量

特点:

  • 动态存储(定义的时候不开辟空间,调用的时候才开辟空间,用完就释放,若再用,需要重新开辟)
  • 引用次数=赋初值次数=开辟空间次数(如果定义的时候给了初值,每次开辟空间都要存入初值)
  • 定义时无初值则初值不确定

2.局部静态变量(static)

特点:

  • 静态存储(程序装载的时候开辟空间,用完也不释放,整个程序结束的时候释放(只开辟一次,也只释放一次)
  • 保留数据(第一次函数留下的数据,第二次可以继续使用)
  • 若有初值,那就是唯一一次(如果定义的时候赋了初值,开辟空间的时候存入初值,且仅此一次)
  • 如果定义的时候无初值,自动赋值为0
  • 变量作用域只是在他的花括号内部

3.寄存器变量(register)

特点:

  • 变量的值存在系统分配的寄存器中,减少变量存取的时间开销
  • 只有局部自动变量和形参可以定义为寄存器变量
  • 寄存器变量数目不能太多,非必要一般不用
  • 微机上,一般把寄存器变量当做自动变量处理

3.全局变量

特点:

  • 存储类别:都是静态存储,程序运行之前开辟空间,结束后释放空间
  • 初值:如果不赋初值,初值为0

1.一般全局变量(程序级)(可以通过extern拓展到别的源文件中使用)

  • 可以通过extern将作用域在文件内先前拓展
  • 通过extern还可以将作用域拓展到其他文件

2.静态全局变量(static限制全局变量只可以在本源文件中使用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值