C语言day10-10typedef

作者: liyuhong165 | 来源:发表于2016-05-08 22:58 被阅读95次

    pragma mark typedef

    pragma mark 概念

    /**
     什么是typedef, 它有什么作用
     typedef可以给一个已知的数据类型起别名(外号)
     
     利用typedef 给数据类型起别人的格式:
     typedef 原有的数据类型 别名;
    
     注意: 
    1. typedef 不仅能给系统原有的数据类型起别名,也可以给一个自定义的数据类型起别名
    2. 利用typedef给数据类型起别名, 并不会生成一个新的数据类型,仅仅给原有的类型起一个别名而已
     */
    

    pragma mark 代码

    #include <stdio.h>
    #pragma mark 加减法函数
    int sum (int v1, int v2)
    {
        return v1 + v2;
    }
    
    int minus (int v1, int v2)
    {
        return v1 - v2;
    }
    
    int main()
    {
    
    
        return 0;
    }
    #pragma mark ----------------5---------------
    #pragma mark 给指向函数的指针类型 起别名 定义
    // 注意: 如果是给指向函数的指针 起别名, 那么指向函数的指针的指针名称 就是它的别名
    // 默认 就是 functionPotiner == int (*functionPotiner) (int , int)
    typedef int (*functionPotiner) (int , int);
    // OC的block
    //typedef int (^functionPotiner) (int , int);
    void text5()
    {
        // 如何定义变量 : 数据类型 变量名称;
        
        // 指向函数的指针
        // 定义 再 赋值
        //    int (*sumP) (int, int);
        //    sumP = sum;
        //定义的同时赋值
        //    int (*sumP) (int, int) = sum;
        functionPotiner sumP = sum;
        printf("sum = %i\n", sumP(10, 20));
        
        // 定义 再 赋值
        //    int (*minusP) (int ,int);
        //    minusP = minus;
        //   定义的同时赋值
        //    int (*minusP) (int ,int) = minus;
        functionPotiner minusP = minus;
        printf("sum = %i\n", minusP(10, 20));
    }
    
    #pragma mark ----------------4---------------
    #pragma mark 给指针类型 起别名 定义
    // String == char *
    typedef char * String;
    #pragma mark 给指针类型 起别名
    void test4()
    {
        //    char *name = "lyh";
        //    printf("name = %s\n",name);
        
        // 注意 : 如果给指针起别名之后, 那么以后利用别名定义变量就不用再加*了
        String name = "lyh";
        printf("name = %s\n",name);
    }
    
    #pragma mark ----------------3---------------
    #pragma mark 给枚举类型 起别名 三种方式定义
    // 给枚举起 别名
    // 1.先定义枚举类型, 再给枚举类型起别名
    /*
     enum Gender
     {
     kGenderMale,
     KGenderfFemale
     };
     typedef enum Gender SEX;
     */
    
    // 2.定义枚举类型的同时给枚举类型起别名
    /*
     typedef enum Gender
     {
     kGenderMale,
     KGenderfFemale
     }SEX;
     */
    
    // 3.定义枚举类型的同时给枚举类型起别名, 并且省略枚举原有类型名称
    typedef enum
    {
        kGenderMale,
        KGenderfFemale
    }SEX;
    
    
    #pragma mark 给枚举类型 起别名 三种方式
    void test3()
    {
        // 给枚举起别名
        //    enum Gender sex;
        SEX sex;
        sex = kGenderMale;
        
        /*
         定义枚举变量有3种方式
         1.先定义枚举类型, 再定义枚举变量
         2.定义枚举类型的同时定义枚举变量
         3.定义枚举类型的同时定义枚举变量,并且省略枚举类型名称
         */
        
        enum Geander2
        {
            kGeander2Male2,
            kGeander2Female2
        }sex2;
        sex2 = kGeander2Male2;
        
        
        enum
        {
            kGeander3Male3,
            kGeander3Female3
        }sex3;
        
        sex3 =kGeander3Male3;
    }
    #pragma mark ----------------2---------------
    
    #pragma mark 给结构体 起 别名 三种方式
    // 1.先定义结构体类型, 在给类型起别名
    /*
     struct Person
     {
     int age;
     double height;
     char *name;
     };
     // SPerson == struct Person
     typedef struct Person SPerson;
     */
    
    // 2.定义结构体类型的同时,给结构体类型起别名
    /*
     typedef struct Person
     {
     int age;
     double height;
     char *name;
     }SPerson;
     */
    
    //3.定义结构体类型的同时,给结构体类型起别名, 并且省略掉原有类型的名称
    typedef struct
    {
        int age;
        double height;
        char *name;
    }SPerson;
    
    #pragma mark 给结构体类型 起别名三种方式
    void text2()
    {
        /*
         // 因为作用域问题 所以建议放到全局变量里面
         // 给构造类型起别名
         struct Person
         {
         int age;
         double height;
         char *name;
         };
         */
        
    //    struct Person sp0;   // == SPerson sp
        SPerson sp;
        /*
         结构体类型的定义方式(3种)
         1.先定义类型再定义变量
         2.定义类型的同时定义变量
         3.定义类型的同时定义变量,并且省略类型名称
         */
    }
    
    #pragma mark ----------------1---------------
    
    #pragma mark 给基本数据类型 起 别名
    typedef int Integer;
    typedef Integer myInt;
    // int float double char
    #pragma mark 给基本数据类型 起别名
    void test1()
    {
        int num = 10;
        printf("num = %i\n",num);
        
        Integer age = 30;
        printf("age = %i\n",age);
        
        myInt score = 100;
        printf("score = %i\n",score);
    }
    

    相关文章

      网友评论

        本文标题:C语言day10-10typedef

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