C语言允许为一个数据类型起一个新的别名,就像给人起“绰号”一样。
为结构体、共用体起别名:(替换结构体最常用)
1 2 3 4 5
   | typedef struct animal {   char* name;   int legs;   int speed; } Animal;
  | 
 
使用 typedef 命令,为 struct animal 起了一个别名 Animal 。同样关于结构体的几种定义方式也都可以使用。
1 2 3 4 5
   | typedef union {   short count;   float weight;   float volume; } quantity;
  | 
 
typedef 命令可以为 union 数据类型起别名。
为某个基本类型起别名:(其次)
 习惯上,常把用typedef声明的类型名的第1个字母用大写表示,以便与系统提供的标准类型标识符相区别。
 举例:
1 2 3 4
   | typedef int Integer;   Integer a, b; a = 1; b = 2;
   | 
 
 Integer a, b;等同于int a, b;。
为指针起别名:
1 2 3
   | typedef int* intptr; int a = 10; intptr x = &a;
   | 
 
intptr 是 int* 的别名。不过,使用的时候要小心,这样不容易看出来,变量 x 是一个指针类型。
为数组起别名:
1 2 3 4 5 6 7
   |  typedef int five_ints[5]; five_ints x = {11, 22, 33, 44, 55};  
 
  typedef int Num[100];  Num a; 
 
  | 
 
- 上例中, five_ints 是一个数组类型。我们把原有的
int [5]看做是数组的类型。 
- 举例:指针数组
 
1
   | typedef int *PTR_TO_ARR[4];
   | 
 
- 表示 PTR_TO_ARR 是类型
int * [4]的别名,它是一个二维数组指针类型。接着可以使用 PTR_TO_ARR 定义二维数组指针: 
为函数起别名:
- typedef 为函数起别名的写法如下:
 
1
   | typedef signed char (*fp)(void);
   | 
 
- 类型别名 fp 是一个指针,代表函数 signed char (*)(void) 。
 
- 举例:
 
1 2
   | typedef int (*PTR_TO_FUNC)(int, int); PTR_TO_FUNC pfunc;
   | 
 
参考链接: