zoukankan      html  css  js  c++  java
  • C语言关键字(部分)

    1)非常见:auto、register、volatile、goto

    2)存储相关:const、extern、register、volatile、static、auto、signed、unsigned

    3)数据类型:char、short、int、float、long、double、struct、union、enum、void

    4)逻辑控制:if、else、for、while、do、break、continue、return、default、switch、case、goto

    5)特殊用途:sizeof、typedef

    auto:

    auto在定义变量的时候可以自动检测变量类型。——>int a=1,等同于auto a=1;   float b=1.11;等同于 auto b=1.11; 

    auto修饰局部变量,表示这个变量是自动局部变量,自动局部变量分配在栈上。(既然是分配在栈上,说明他如果不初始化的话那么值就是随机的,全局变量的值初始化是0)

    平时定义局部变量时就是定义的auto的,只是省略了auto关键字而已。auto的局部变量其实就是默认定义的普通的局部变量。

    register :register关键字不常用,作用就是:用register修饰的变量编译器会尽量把它分配子寄存器中。(平时分配的一般变量都是在内存中)。分配在寄存器中用法是一样的,但是读写效率会高很多。所以说register修饰的变量用在那种变量被反复高频率的使用,通过改善这个变量的访问速度可以极大的提升程序运行效率。register编译器只能承诺尽量将register修饰的变量放在寄存器中,但是不保证一定放在寄存器中。主要原因是因为寄存器数量有限,不一定有用。(有些编译器会自动优化,就是把变量复制到cpu寄存器中。)


    extern :

    extern主要用来声明全局变量,声明的目的主要是在a.c中定义全局变量整个工程中都能使用该变量。(一个工程中同样的全局变量只能有一个。)


    static :

    用来修饰局部变量,形成静态局部变量。静态局部变量存储在 全局区(静态区),局部变量存储在栈区(跟函数参数值一样)。作用域是所在函数。

    用来修饰全局变量,形成静态全局变量。静态全局变量存储在 全局区(静态区)。作用域是自身所在文件。(全局变量作用域是整个工程)

    volatile:

    一个定义为volatile 的变量是说这变量可能会被意想不到地改变。优化器在用到这个变量时必须每次都小心地重新读取内存中的值,而不是使用保存在寄存器里的备份值。 如果将将变量加上volatile,则编译器对此变量的读写操作不会被优化 。

    volatile 用途:

    1、中断服务程序中修改的供其它程序检测的变量需要加volatile;(如:标志变量)
    2、多任务环境下各任务间共享的标志应该加volatile
    3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;

    const:

    const 修饰的变量具有只读的属性而且是全局的。const修饰的可以取地址,就是说指针可以指向它。而#define 定义的常亮是不能取地址的。

    code:

    标准C语言中没有。在单片机中code可以把常数和表格之类的放到ROM中去以节省RAM。(rom只读内存)

    goto:从一下列子中可以看出 goto 可以跳出多重循环,跳到标号位置程序继续执行。但goto在程序太大了的时候,如果程序出错,很难调试找出错误,要慎用goto。

    int  main()
     {    
        int i = 1;   
        while(1) 
        {    
             printf("在while(1)里 ");     
            while(i++)
            {       
              printf("i = %d ",i);       
              if(i > 3)            
              {                
                goto TiaoChu;       
              }        
           }    
        }
     TiaoChu:   
      printf("程序结束 ");   
      return 0; 
    }  
  • 相关阅读:
    JZ5 替换空格
    数学分析 H 1 复习要点(部分)
    算法贪心
    Python之位运算
    sorted复杂排序cmp_to_key
    算法位运算
    Python3新特性总结 持续更新
    算法树
    H5 ios端微信浏览器下底部工具固定方法
    Eclipse 安装windows10环境
  • 原文地址:https://www.cnblogs.com/wangjinshan/p/9518451.html
Copyright © 2011-2022 走看看