天天看點

【C語言】typedef的使用一、什麼是typedef二、typedef用法三、進階typedef四、Typedef與define

目錄

一、什麼是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的使用一、什麼是typedef二、typedef用法三、進階typedef四、Typedef與define
【C語言】typedef的使用一、什麼是typedef二、typedef用法三、進階typedef四、Typedef與define

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二、typedef用法三、進階typedef四、Typedef與define

三、進階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為整型變量。

繼續閱讀