C语言中变量的存储类别及其存储方式

(一)AUTO

auto----自动变量,动态存储方式


auto是C语言中局部变量的默认属性

编译器默认所有的局部变量

auo变量存储在程序的栈中,默认属性

特点:

(1) 自动变量仅适合于局部变量,其作用域仅限于定义该变量的个体内。在函数定义中定义的自动变量,只在改函数内有效。在复合语句中定义的自动变量只在该复合语句中有效。

(2)自动变量属于动态存储方式,只有在使用它,即定义该变量的函数被调用时才给它分配存储单元,开始它的生存期。函数调用结束,释放存储单元,结束生存期。

(3)由于自动变量的作用域和生存期都局限于定义它的个体内,因此不同的个体中允许使用同名的变量而不会混淆。


(二)STATIC

static---静态变量,静态存储方式


static变量存储在程序静态区中

static修饰的局部变量存储在程序静态区

static的另一个意义是文件作用域标识符

static可以修饰函数,也可以修饰全局变量

static修饰的全局变量作用域只是声明的文件中

static修饰的函数作用域只是声明的文件中


特点:

(1)静态局部变量

生存期为整个源程序

作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量

允许对静态局部变量赋初值,若未赋予初值,系统自动赋以0值

静态局部变量在编译时赋初值,只赋初值一次

(2)静态全局变量

全局变量的说明之前再冠以static就构成了静态的全局变量


(三)REGISTER

register---寄存器变量,动态存储方式


register变量请求存储于CPU寄存器中

register关键字指明将变量存储于寄存器中

register只是请求寄存器变量,但不一定请求成功

register变量的必须是CPU寄存器可以接受的值

不能用&运算符获取register变量的地址


特点:

(1)只有局部自动变量和形式参数才可以定义为寄存器变量。

(2)由于CPU中寄存器的个数是有限的,因此使用寄存器变量的个数也是有限的


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值