目录
  • 一、什么是typedef
  • 二、typedef用法
    • 1、对于数据类型使用例如:
    • 2、对于指针的使用例如
    • 3、对于结构体的使用
  • 三、进阶typedef
    • 1、数组指针
    • 2、指针函数
    • 3、Int *(*array[3])(int);
    • 4、Void (*funA(int,void(*funB)(int)))(int);
  • 四、Typedef与define

    一、什么是typedef

    typedef是在C和C++编程语言中的一个关键字。作用是为现有的数据类型(int、float、char……)创建一个新的名字,目的是为了使代码方便阅读和理解。

    二、typedef用法

    1、对于数据类型使用例如:

    typedef  int   NEW_INT;

    以上就是给int起了一个新的名字NEW_INT,注意要加分号。当要定义int类型数据时就可以:

    NEW_INT num;

    此时NEW_INT num 等同于 int num。

    2、对于指针的使用例如

    typedef  int   *PTRINT;

    以上就是给int *起了一个新的名字NEW_INT。可定义int类型指针变量如:

    PTRINT x;

    此时PTRINT x等同于int *x。

    例:

    C语言 typedef的用法示例详解

    C语言 typedef的用法示例详解

    3、对于结构体的使用

    在声明结构体时可为结构体和结构体指针起别名,如:

    typedef struct NUM
    {
         int a;
         int b;
    }DATA,*PTRDATA;

    此时DATA等同于struct NUM,*PTRDATA等同于struct NUM *。

    定义结构体变量及指针可简化为:

       DATA data;           //定义结构体变量
       PTRDATA pdata;   //定义结构体指针

    举个例子:

    #include <stdio.h>
    typedef struct NUM
    {
         int a;
         int b;
    }DATA,*PTRDATA;
    int main()
    {
           DATA data;           //定义结构体变量
           PTRDATA pdata;   //定义结构体指针
           pdata=&data;      //结构体指针指向结构体变量      
           data.a=100;
           data.b=500;
           printf("a=%d\nb=%d\n",data.a,data.b);
           printf("a=%d\nb=%d\n",pdata->a,pdata->b);
           return 0;
    }

    运行结果:

    C语言 typedef的用法示例详解

    三、进阶typedef

    1、数组指针

    int (*ptr)[3];

    使用Typedef:

    typedef int (*PTR_TO_ARRAY)[3];

    例:

    #include <stdio.h>
    typedef int (*PTR_TO_ARRAY)[3];
    int main()
    {
           Int I;
           Int temp[3]={1,2,3};
           PTR_TO_ARRAY ptr_to_array;
           ptr_to_array = &temp;
           for(i+0;i<3;i++)
            {
                  printf("%d\n",(*ptr_to_array)[i]);
            }
           return 0;
    }

    2、指针函数

    int (*fun)(void);

    使用Typedef:

    typedef int (*PTR_TO_FUN)(void);

    3、Int *(*array[3])(int);

    int *(*array[3])(int);

    使用Typedef:

    typedef int *(*PTR_TO_FUN)(int);
    PTR_TO_FUN array[3];

    4、Void (*funA(int,void(*funB)(int)))(int);

    void (*funA(int,void(*funB)(int)))(int);
    void (*funA(参数))(int);

    使用Typedef:

    typedef void (*PTR_TO_FUN)(void);
    PTR_TO_FUN funA(int, PTR_TO_FUN);

    四、Typedef与define

    Typedef是起别名,define是替换。

    例如:

    typedef int *PTR;
    PTR a,b;

    此时a,b都是指针变量。

    #define PTR int*
    PTR a,b;

    此时等同于

    int *a,b;

    只有a为指针变量,而b为整型变量。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。