用typedef声明新类型名#

1.简单地用一个新的类型名代替原有的类型名

typedef int Integer;
typedef float  Real;

int i,j; float a,b; 与 Integer i,j; Real a,b;等价

2.命名一个简单的类型名代替复杂的类型表示方法

(1)命名一个新的类型名代表结构体类型:

typedef struct
{
  int month;
  int day;
  int year;
}Date;

Date birthday;
Date *p; 

(2) 命名一个新的类型名代表数组类型

typedef int Num[100];
Num a;

(3)命名一个新的类型名代表一个指针类型

typedef char *String; 
String p,s[10];

(4)命名一个新的类型名代表指向函数的指针类型

typedef int (*Pointer)(void);   
Pointer p1,p2;

归纳起来,声明一个新的类型名的方法是

① 先按定义变量的方法写出定义体(int i;)

② 将变量名换成新类型名(将i换成Count)

③ 在最前面加typedef

    (typedef int Count)

④ 用新类型名去定义变量

以定义上述的数组类型为例来说明:

① 先按定义数组变量形式书写:int a[100];

② 将变量名a换成自己命名的类型名:int Num[100];

③ 在前面加上typedef,得到typedef int Num[100];

用来定义变量:Num a;

相当于定义了:int a[100];

对字符指针类型,也是:

char *p;

char *String;

typedef char *String;

String p;

说明:

(1)以上的方法实际上是为特定的类型指定了一个别名。例如

①typedef int Num[100];

Num a; Num是int [100]的别名

②typedef int (*Pointer)();

Pointer p1; Pointer是int (*)()的别名

(2) 用typedef只是对已经存在的类型指定一个新的类型别名,而没有创造新的类型。

(3)用typedef声明数组类型、指针类型,结构体类型、共用体类型、枚举类型等,使得编程更加方便。

(4)typedef与#define表面上有相似之处

(5) 当不同源文件中用到同一类型数据时,常用typedef声明一些数据类型。可以把所有的typedef名称声明单独放在一个头文件中,然后在需要用到它们的文件中用#include指令把它们包含到文件中。这样编程者就不需要在各文件中自己定义typefef名称了。

(6) 使用typedef名称有利于程序的通用与移植。有时程序会依赖于硬件特性,用typedef类型就便于移植。