typedef 就是类型定义,把一种数据类型定义为某一标识符,并且在程序开发中应用这一标识符来实现相应的数据类型变量的定义。

总结了一下,使用范围大致有以下几种情况:

(1)、定义数据结构

通常为了输入程序的方便,增强程序的可读性,我们将结构体定义如下:

struct {
  int x;
  int y;
};
typedef struct{int x;int y;}POINT;
也可以 定义节点:
typedef struct  _node  Node;
struct _node{
int value;
Node*next;
};

(2)、定义数组类型

typedef int arry[100];
arry a;
相当于 int a[100];

(3)、定义函数指针

int test(int a);
typedef int (*p)(int a);
p  ptest;  
ptest=test; //将函数地址赋值给对象
ptest(10);

(4)、定义类类型

与定义结构体很相似

typedef class{
private:
......
public:
......
int a;
} myclass;

(5)、定义一种数据类型的别名

不只是简单的宏替换,可以用做同时声明指针类型的多个对象。

typedef char* PCHAR;

PCHAR  pa,pb;

使用宏:#define PSTR char*;

PSTR s1,s2;

那么 pa,pb,s1 都是char*类型,而s2则成了char类型。

(6)、定义与平台无关的类型

比如定义一个 REAL的浮点类型,在目标平台一上,让它表示最高精度的类型为:

typedef long double REAL;

在不支持long double 的平台二上,改为:

typedef   double  REAL;

在不支持 double 的平台三上,改为:

typedef   float REAL;

这样,当跨平台使用时,只需要改变 typedf 这段定义就行,不用改变其他的源码。