1.struct Student
{
intnum;
charsex;
charname[50];
};
在C中,要定義一個Student類型的變量需要使用方式struct Student st;
在C++中,要定義一個Student類型的變量只需要Student st;
為方便,可使用typedef。如下:
typedef struct tagSTUDENT
{
int num;
char sex;
char name[50];
}STUDENT;
這樣,即使是在C中,要定義一個tagSTUDENT類型的變量也只需要使用STUDENT st;
2.同時聲明指針型的多個變量時
char* pa, pb;//實際pa為char*類型,即指向字符變量的指針;而pb為char類型,即字符型變量
使用typedef可解決此問題。
typedef char* PCHAR;
PCHAR pa, pb;//聲明了兩個char* 變量
對結構體也是一樣的。
typedef struct tagSTUDENT
{
int num;
char sex;
char name[50];
}* PSTUDENT, STUDENT;//實際PSTUDENT為struct tagSTUDENT*類型,STUDENT為structtagSTUDENT類型
3.用typedef來定義與平台無關的類型。
比如定義一個叫 REAL 的浮點類型,在目標平台一上,讓它表示最高精度的類型為:
typedef long double REAL;
在不支持 long double 的平台二上,改為:
typedef double REAL;
在連 double 都不支持的平台三上,改為:
typedef float REAL;
也就是說,當跨平台時,只要改下 typedef 本身就行,不用對其他源碼做任何修改。
標准庫就廣泛使用了這個技巧,比如size_t。另外,因為typedef是定義了一種類型的新別名,不是簡單的字符串替換,所以它比宏來得穩健。
4. typedef char* PCHAR1;
#define PCHAR2 char*;
PCHAR1 pa, pb;//pa,pb均為char*類型
PCHAR2 pa, pb;//等價於char* pa, pb。相當於定義了一個char*和一個char
參考
[1] http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html