- 用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类型就便于移植。