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

    void 、 char 、 int、float、 double、 short、long、signed、unsigned、struct、union、 

    enum 、 typedef、sizeof、auto、static、register、extern 、const、volatile、return

    continue、break、goto、if、else、switch、case、default、for、do、while

    union:共用体

    结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。

    //方式1    先定义共用体,再创建变量,
    union data{
      int n;  
      char ch;  
      double f;  
    };
    union data a,b,c;
    //方式2 也可以在定义共用体的同时创建变量
    union data{
      int n;  
      char ch;  
      double f;  
    }a,b,c;
    //方式3不再定义新的变量,也可以将共用体的名字省略
    union{
        int n;
        char ch;
        double f;
    } a, b, c;

    enum :申明枚举

    //关键字+枚举类型的名字
    
    enum typeName
    {
      valueName1,
      valueName2,
      valueName3,
               .
               .
               .
    };
    //举例
    enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };
    //也可以在定义枚举类型的同时定义变量:
    enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a, b, c;

    typedef与define是给对象起另外的名字,主要为了简化程序和增强可读性

    typedef:申明类型名称,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用typedef。

    如:typedef int (pfun)(int,int)        加上typedef会由函数指针变量变为函数指针类型。

    #define不只是可以为类型取别名,还可以定义常量、变量、编译开关等

    define:是预处理指令,也称作宏定义,在预处理时进行简单而机械的字符串替换,不作正确性检查,没有作用域的限制,

    #define     INTPTR1     int*
    typedef     int*            INTPTR2;

    典型错误用法

    //带分号
    #defineN 100;
    
    //定义指针类型
    #define pin (int*)
    pin a,b;
    int* a,b; 
    /*本意是a和b都是int型指针,但是实际上变成int* a,b;a是int型指针,而b是int型变量。这是应该使用typedef来代替define,这样a和b就都是int型指针了。*/

    static与const

    static:

      1、修饰局部变量--存放在静态存储区,生命周期是整个程序结束。
      2、修饰函数和全局变量--限制该全局变量或者函数的作用域仅限于本文件

    特点:

      a、记忆性:在第二次调用进入时, 能保持第一次调用退出时的值.,造成不同时刻至运行的结果可能不同.

      b、生存期:全局性和唯一性,每次调用时,都指向同一块内存,这就造成一个很重要的问题,不可重入性。

    优点:

      不用担心自己定义的函数,是否会与其它文件中的函数同名。

      

    const:定义常量,常量的值不能改变

    优点:

      1、可以保护被修饰的东西,防止意外修改,增强程序的健壮性 

    const int n=5;等同于
    int const n=5;
    //常量指针是指针指向的内容是常量,可以有一下两种定义方式
    const int * n;
    int const * n;
    //指针常量是指指针本身是个常量,不能在指向其他的地址
    int *const n;

    volatile:精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;

  • 相关阅读:
    JAVA heap space 内存溢出
    S数据导入
    全部物料的交期都要加上两天 V_OUT_PR
    S初始化生产环境数据
    修改邮件通知模板
    java 工具类使用
    Nginx 搭建图片服务器
    java 枚举类型 Enum
    aop设计原理(转)
    Callable+ThreadPoolExecutor实现多线程并发并获得返回值(转)
  • 原文地址:https://www.cnblogs.com/xwtstudio/p/12609831.html
Copyright © 2011-2022 走看看