C提供了许多标准类型(如int,char,flaot,double,long等),此外,还可以用typedef声明一个新的类型名来代替原来已有的类型名。
声明形式:typedef 已有类型名
例:声明结构体类型:typedef
但有几点需注意:
(1)、用typedef可以声明各种类型名,但不能用来定义变量;
(2)、用typedef只是对已经存在的类型增加一个类型名,并没有创造新的数据类型;
(3)、typedef与#define有相似之处;如typedef int COUNT;和#define COUNT int;都是用“COUNT” 代替int。但二者的实质不同:#define在预编译时处理,它只作简单的字符串替换;而typedef则在编译时处理,并且不是作字符串替换,而是采用如同定义变量的方法来声明一个类型。
(4)、当不同的源文件中用到同一种数据类型(尤其是像数组、指针、结构体、共用体等类型)时,常用typedef声明一些数据类型,并把它们单独放在一个文件中,然后在需要用到这些类型数据的文件中用#include命令把它们包含进来。
(5)、使用typedef还有利于程序的通用与移植。
例:假设不同的计算机存放整数时用不同的字节数,则要实现不同计算机之间的程序移植(如从2字节到4字节),一般的方法是将程序中定义变量的每一个int都改为long,显然数量越多越麻烦。若在程序开始时,用Integer来声明int:typedef int Integer;并且在程序中所有用到整型变量的地方都用Integer来定义,则程序移植时,只需改动typedef定义体即可:即将typedef int Integer改为typedef long Integer即可。