zoukankan      html  css  js  c++  java
  • C语言typedef

    #include <stdio.h>
    //基本类型
    typedef int MyInt;
    //可以对typedef产生的类型名二次起别名
    typedef MyInt MyInt2;
    // 给指针类型char *起一个新的类型名称String
    typedef char * String;
    //给结构体定义别名
    //方法一:先定义类型,再声明别名
    struct Student1
    {
        int age;
    };
    typedef struct Student1 MyStu1;
    //方法二:定义类型的同时声明别名
    typedef  struct Student2
    {
        int age;
    } MyStu2;
    //方法三:定义类型的同时声明别名,此时省略了结构体名称
    typedef struct
    {
        int age;
    } MyStu3;
    //使用枚举的方法和结构体类似
    //定义结构体指针
    //方法一:先定义类型,在定义指针别名
    struct Student4
    {
        int age;
    };
    typedef struct Student4 *MyStu4;
    //方法二:定义类型的同时定义指针别名
    typedef struct Student5
    {
        int age;
    } *MyStu5;
    //使用typedef定义函数指针类型的别名,此时MyPoint就是函数指针类型
    typedef void (*MyPoint)(int, int);
    void  test(int a, int b);
    int main()
    {
        /*************************************************************
         *  typedef:给已经存在的类型起一个新的名称,该类型可以是系统类型,也可以是自定义类型
         *  2.使用场合:
         *    1、基本数据类型
         *    2、指针
         *    3、结构体
         *    4、枚举
         *    5、指向函数的指针
         *  注意:使用typedef产生的类型和元类型的作用一样
         *     typedef的某些功能使用宏定义也可以实现但是,宏定义仅仅只是替换,使用不当会发生错误
         *************************************************************/
        MyInt a = 10;
        printf("a = %d
    ", a);
        MyInt2 b = 10;
        printf("b = %d
    ", b);
        String str = "abc";
        printf("str = %s
    ", str);
        MyStu1 stu1 = {20};
        MyStu2 stu2 = {21};
        MyStu3 stu3 = {22};
        printf("stu1.age = %d 
    ", stu1.age);
        printf("stu2.age = %d 
    ", stu2.age);
        printf("stu3.age = %d 
    ", stu3.age);
        struct Student4 Stu4 = {23};
        MyStu4   pstu4 = &Stu4;
        printf("stu4.age = %d 
    ", pstu4->age);
        struct Student5 Stu5 = {24};
        MyStu5   pstu5 = &Stu5;
        printf("stu5.age = %d 
    ", pstu5->age);
        MyPoint p ;
        p = test;
        p(5, 10);
         return 0;
    }
    void  test(int a, int b)
    {
        printf("a + b = %d
    ", a + b);
        return;
    }
    a = 10
    b = 10
    str = abc
    stu1.age = 20 
    stu2.age = 21 
    stu3.age = 22 
    stu4.age = 23 
    stu5.age = 24 
    a + b = 15
  • 相关阅读:
    redis(二)高级用法
    redis(一) 安装以及基本数据类型操作
    RabbitMQ(五) -- topics
    JS实时数据运算
    Access数据库中Sum函数返回空值(Null)时如何设置为0
    asp检测数字类型函数
    MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
    WIN8系统安装软件时提示"扩展属性不一致"的解决方法
    免费的网络扫描器-Advanced IP Scanner
    中国电信大亚DP607光猫破解,设置路由,wifi!关闭远程管理,改连接限制,SN码查询!
  • 原文地址:https://www.cnblogs.com/heml/p/3531750.html
Copyright © 2011-2022 走看看