typedef 命令用来为某个类型起别名。
typedef type name;上面的代码中,type代表类型名,name代表别名。
typedef unsigned char BYTE;BYTE c = 'a';上面示例中,typedef命令为类型unsigned char 起别名BYTE, 然后就可以使用BYTE声明变量。typedef 可以一次指定多个别名。
typedef int INT1, INT2, INT3;上面示例中,一次性为int类型起了三个别名。
typedef 可以为指针起别名。
typedef int* intptr;int a = 11;intptr x = &a;上面的示例中,intptr是int *的别名,不过,使用的时候要注意,这样不容易看出来,变量x是一个指针类型。typedef 也可以用来为数组类型起别名:
typedef int six_ints[6];six_ints arr = {11, 12, 13, 14, 15, 16};上面示例中,six_ints是一个数组类型,包含6个整数的。
typedef 为函数起别名的写法如下:
typedef signed char (*fp)(void);上面示例中,类型别名fp是一个指针,代表函数signed char (*)(void)。
typedef 为类型起别名的好处,主要有下面几点:
1.更好的代码可读性
typedef char* STRING;STRING name;上面示例为字符指针起别名为STRING,以后使用STRING声明变量时,就可以轻易辨别该变量是字符串。
2.为struct, union, enum等命令定义的复杂数据结构创建别名,从而便于引用。
struct treenode{ //...};typedef struct treenode * Tree;上面的示例中,Tree为struct treenode* 的别名。
typedef 也可以与struct 定义数据类型的命令写在一起。
typedef struct test{ char *name; int count; int speed;} Test;上面的示例中,自定义数据类型时,同时使用typedef命令,为struct test 起了一个别名Test;
这种情况下,C语言允许省略struct命令后面的类型名。
typedef struct{ char *name; int count; int speed;} Test;上面示例相当于为一个匿名的数据结构起了一个别名Test。
3.typedef 方便以后为变量改类型
typedef float app_float;app_float f1, f2, f3;上面示例中,变量f1, f2, f3的类型都是float, 如果需要为它们改类型,只需要修改typedef语句即可。
typedef long double app_float;上面命令将变量f1, f2, f3的类型都改为long double。
4.简化类型声明
C语言有些类型声明相当复杂,比如下面这个:
char (*(*x(void))[5])(void);typedef可以简化复杂的类型声明,使其更容易理解。首先,最外面一层起一个类型别名。
typedef char (*Func)(void);Func (*x(void))[5];这个看起来还有点复杂,就为里面一层也定义一个别名。
typedef char (*Func)(void);typedef Func Arr[5];Arr* x(void);上面的代码就比较容易解读了:
| 留言与评论(共有 0 条评论) “” |