C语言auto,static,register分析

以下内容为本人大学时的笔记,最近偶然翻到,所以发出来也算留一下备份,所以有些描述什么的可能不太准确,欢迎各位大神批评指正。

C语言auto,static,register分析

C语言中的变量可以有自己的属性,在定义变量的时候可以加上“属性”关键字,“属性”关键字指明变量的特有意义

auto

auto即C语言中局部变量的默认属性编译器默认所有的局部变量都是auto的auto是在栈分配内存

static

  1. static修饰的局部变量存储在程序静态区
    如果想要定义静态变量,需要写明static

  2. static关键同时具有“作用域限定符”的意义
    static修饰的全局变量作用域只是声明的文件中
    static修饰的函数作用域只是声明的文件中

register

  1. register关键字指明将变量存储于寄存器中
  2. register只是请求寄存器变量,但不一定请求成功
    • register变量的必须是CPU寄存器可以接受的值
    • 因为变量是在寄存器中,所以没有地址,所以不能用&运算符获取register变量的地址

总结

  1. 全局变量不能用auto修饰
  2. 全局变量不能放在寄存器内(用register修饰)
  3. register变量操作起来要比在内存中的变量快得多,所以应用在一些要求速度的实时系统中
  4. static修饰的静态局部变量作用域仅仅在函数内部,但是生命周期却是程序的运行期
  5. static修饰的静态局部变量只会在第一次调用的时候被初始化1次
    在这里插入图片描述
  6. static修饰的全局变量只能在本文件中访问,不能在其他文件中访问,但是可以通过该全局变量所在文件的函数间接访问
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  7. static修饰的函数只能在本文件中访问,不能在其他文件中访问,但是可以通过该函数所在文件的其它函数间接访问
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值