C基础——typedef简介

  typedef工具是一个高级数据特性,利用typedef可以为某一类型自定义名称。在这一方面,与预处理指令#define相似,但也有不同之处:   第1点,typedef定义的名称==只作用于数据类型==,不能用于值。   第2点,typedef由编译器解释,而不是预处理器。   第3点,在受限范围内,typedef比#define更加灵活 ```C typedef char* STRING; STRING str1, str2; ```   以上代码中,STRING的作用域取决于定义位置,如果在函数内,则是块作用域,如果在函数外,则有文件作用域。   值得一提的是,第2个声明将str1和str2都声明为char *类型,即char *str1, *str2; ```C #define char* STRING; STRING str1, str2; ```   如果类似以上代码,将typedef换成#define,则预处理器会将第2条声明解释为:char *str1, str2;即,只有str1是char *类型,而str2是char类型。   typedef还可以用于struct ```C typedef struct book { char title[21]; char author[21]; float price; }BOOK; struct book library1; BOOK library2; ```   以上代码中,BOOK就是typedef为struct book定义的别名,效果与之相同。此外,使用typedef时可以省略结构标记: ```C typedef struct { char name[21]; int age; char job[21]; }PERSON; PERSON p1 = {"Mike", 15, "student"}; ```   最后一条声明将被翻译成: ```C struct{char name[21], int age; char job[21]} p1 = {"Mike", 15, "student"}; ```   使用typedef的另一个原因是:为复杂的类型命名 ```C typedef char (* FUN()) [5]; ```   将FUN声明为一个函数类型,该函数返回一个指针,该指针指向内含5个char类型元素的数组。   ==typedef并没有创建新类型,只是为现有类型创建了一个更易于识别和使用的别名==
上一篇:字符串暴力匹配算法详解


下一篇:289,最大数