1.struct Student
{
int num;
char sex;
char name[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