Day13

作者: 喝酸奶要舔盖__ | 来源:发表于2018-09-11 11:50 被阅读0次

    typedef关键字

    作用: 给数据类型起别名,格式: typedef 原来的数据类型名称 新的数据类型名称;

    • 基本概念
    #include <stdio.h>
    
    int main()
    {
        /*
         * typedef 给数据类型起别名
         * 
         * 格式: typedef 原来的数据类型名称 新的数据类型名称;
         * 注意点:
         *   typedef不是定义一个新的数据类型,而是定义一个新的名字
         */
        typedef int ZHENGSHU;
        typedef ZHENGSHU ZHE; //给别名还能再起名字
        return 0;
    }
    
    • 普通指针起别名
    // 1.给指针起别名
        typedef char* String;
        String name = "haha";
        printf("%s\n", name);
    
    • 给结构体起别名
      注意点: 共用体,枚举和结构体起名方式一样
    //2.给结构体起别名
        struct Person
        {
            String name;
            int age;
        };
        //2.1 先定义结构体类型,再给结构体起别名
        typedef struct Person ps;
        ps p = {"niuzi", 20}; //定义结构体变量
        printf("%s\n", p.name);
    
        //2.2 定义结构体类型同时,再给结构体起别名
        typedef struct Person
        {
            String name;
            int age;
        } ps;
        //2.2 定义结构体类型同时,再给结构体起别名,并且省略原有类型的名称
        //企业开发经常这样子写
        typedef struct
        {
            String name;
            int age;
        } Person;
    
        Person p = {"haha", 20};
    
    • 给函数起别名
      注意点: 给指向函数指针起别名,那么指针名称就是别名,企业开发经常使用
        //3. 给函数指针起别名
        //注意点: 给指向函数指针起别名,那么指针名称就是别名,企业开发经常使用
        typedef int (*funp)(int a, int b);
        funp p1 = &sum; // 以后只要是以上这种函数样式都可以用funp来定义指针变量
        funp p2 = &minus;
        return 0;
    }
    int sum(int a, int b){
        return a + b;
    }
    
    int minus(int a, int b){
        return a - b;
    }
    
    • typedef和宏定义取别名区别
    如果是数据类型起别名,一律使用 typedef
    宏定义处理复杂的就不好用
    

    const关键字

    作用: 用于定义一个常量,注意修饰指针的时候位置不同会造成不同的结果

    #include <stdio.h>
    
    int main()
    {
        /*
         * const使用
         * 格式: const 数据类型 变量名称;
         * 字面量常量,宏定义常量
         * 注意点: const可以写在数据类型的前面也可以写在数据类型的后面
         *         对于基本数据类型来说写在前面和写在后面没有区别,但是
         *         对于指针类型来说,前后是有区别的
         */
    
    //    int num = 0; //num是变量保存的数据可以被修改
    //    const int num = 0; //只要在变量前面加上const,那么这个变量保存的数据就不可以修改了
    
        int num = 444;
    //    const int *p; //1. 写在数据类型前面,代表指向的内存中存储的数据不能被修改,但是指向地址可以被修改
    //    int const *p; //2. 写在数据类型的右边,和写在数据类型的左边作用一样
    
        int *const p; //3. 写在指针*号的右边代表指针指向的内存空间可以被修改,但是指针的指向不可以修改
        p = &num;
        printf("%i\n", *p);
        *p = 888;
        printf("%i\n", *p);
    
        int value = 666;
        p = &value;
        printf("%i\n", *p);
    
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:Day13

          本文链接:https://www.haomeiwen.com/subject/gjgygftx.html