目錄
一、什麼是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。
例:
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;
}
運作結果:
三、進階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為整型變量。