嵌入式C语言3.4 关键字---类型描述符auto/register/static/const/extern/volatile/

对内存资源存放位置的限定

1. auto

  默认值---分配的内存都是可读可写的区域

  auto int a; 

  区域如果出现 {} 我们认为在栈空间

 

2. register

  register int a; 限制变量定义在寄存器上的修饰符 

  定义快速访问的变量,放在寄存器内计算速度更快!

  编译器会尽量的安排CPU的寄存器去寄存这个变量a,如果寄存器不足时,变量a还是会被放在存储器中。

 

  内存(存储器)            寄存器

 

 

3. static

  静态

  应用场景: 

    修饰3种数据

    (1) 函数内部的变量 (修饰局部变量)

      int fun()

      {

      int a ;   =====>>static int a;  //会改变该变量的生存期,static局部变量只被初始化一次,下一次调用依上一次的结果值

      }

    (2)   函数外部的变量(修饰全局变量)

      int a;===========>> static int a;  //会限制全局变量的使用范围,他的作用域就是定义他的源文件,其他源文件无法调用

       int fun()

        {

 

        }

    (3) 函数的修饰符(工程中用的较多) //会改变这个函数的使用范围,其他文件不能调用这个static函数

      int fun();   =====》static int fun();

https://blog.csdn.net/qq_37858386/article/details/79064900

 

4.const 只读变量的定义

  只读的变量,不允许再次赋值。const修饰的变量(全局或局部)生命周期是程序的整个运行过程。

这时候会疑惑const和define的区别,两个生命周期都是程序运行过程,但是我们可以初步理解区别在于define宏定义的是常量,可以被修改;但是const修饰的是只读变量,不可修改。

  const int a = 100; 

 http://c.biancheng.net/view/217.html

5.extern

 

6. volatile

  告知编译器编译方法的关键字,不优化编译

 

转载于:https://www.cnblogs.com/ivyharding/p/11094375.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值