存储类型修饰全局、局部变量


存储类型:auto   static  extern   register

auto: 只能用来修饰局部变量,修饰的变量存储在栈区

extern:只能用来修饰全局变量,修饰的变量存储在静态区

static:既可以修饰全局变量,也可以修饰局部变量,修饰的变量存储在静态区

register:只能修饰局部变量,修饰的变量存储在寄存器中

 

初始化
        初始化:定义变量的时候就给变量赋值

int b = 10; //初始化
int a;//定义了一个变量
a = 10;//赋值

注意:

        全局变量不进行初始化,他的值为0;
        局部变量不进行初始化,他的值是一个随机值。


auto :修饰局部变量,存储在栈区

register:修饰局部变量,修饰的变量存储在寄存器中,一般将变量存储在寄存器中,可以提高运行速度,但是,寄存器的内存空间很小,所以用register修饰局部变量时,若寄存器已满,还是会将变量存储在栈区。

extern:修饰全局变量,存储在静态区

程序可以由多个.c文件来构成,但是,main函数只能有一个

作用:告诉编译器,该变量已经在其他文件中定义过了

Static:既可以修饰全局变量,也可以修饰局部变量,修饰变量的时候存储在静态区

用static修饰局部变量:延长局部变量的生命周期,如果局部变量没有初始化,他的值为0。如果初始化了,那么只能初始化一次。
用static修饰全局变量,只能在本文件内使用(限制作用域)

生命周期和作用域
生命周期
从什么时候开辟空间到什么时候释放空间

作用域
使用的范围

局部变量:

生命周期:从定义开始,到模块(大括号)结束

作用域:大括号内

Static修饰的局部变量:

生命周期:从定义开始,到程序结束

作用域:大括号内

全局变量:

生命周期:从定义开始,到程序结束

作用域:整个程

Static修饰的全局变量:

生命周期:从定义开始,到程序结束

作用域:本文件内

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值