变量的储存类型

C语言

函数

变量的储存类型

自动变量

自动变量也称动态局部变量,Automatic Variable

自动变量的标准定义格式

auto 类型名 变量名
auto int temp
没有指定变量的存储类型,默认为自动变量(int temp)

自动变量的“自动"体现在进入语句块时自动申请内存,退出语句块时自动释放内存,仅能被语句块内的语句访问,退出语句块以后不能再访问。

在不同的并列语句块内可以定义同名变量,不会相互干扰,因为它们各自占据着不同的内存单元,并且有着不同的作用域。

注:

1.自动变量在定义时不会自动初始化,未初始化的自动变量的值是随机不确定的,即乱码。

2.自动变量在退出函数后,其分配的内存立即释放,再次进入语句块,该变量被重新分配内存,所以不会保持上次退出函数前所拥有的值。

静态变量

Static Variable的定义格式

static 类型名 变量名
static int temp

在函数内定义的静态变量,称为静态局部变量,静态局部变量只能在定义它的函数内被访问,而在所有函数外定义的静态变量,称为静态全局变量,静态全局变量可以在定义它的文件内任何地方被访问,但不能像非静态的全局变量那样被程序的其他文件所访问。

静态变量是与程序”共存亡“的,而自动变量是与程序块”共存亡“的。

外部变量

Extern Variable的标准格式

extern 类型名 变量名
extern int temp

如果在所有函数之外定义的变量没有指定其储存类别,那么它就是

一个外部变量。外部变量是全局变量,它的作用域是从它的定义点到本文件的末尾。但是如果要在定义点之前或在其他文件中使用它,那么就需要关键字extern对其声明(注意不是定义,编译器并不对其分配内存)

外部变量保存在静态区内,在程序运行期间分配固定的储存单元,其生存周期是整个程序的运行期。没有显示初始化的外部变量由编译程序自动初始化为0。

寄存器变量

Register Variable

寄存器变量就是用寄存器储存的变量。

register 类型名 变量名
register int temp

寄存器(Register)是CPU内部的一种容量有限但数度极快的储存器。

现代编译器能自动优化程序,把普通变量优化为寄存器变量,并且可以忽略用户的register指定,所以一般无须特别声明变量为register。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值