C和指针 3.3 typedef

缘起

《C和指针》 3.3

分析

1
char *ptr_to_char;

声明了一个指向字符数据类型的指针变量,它名叫ptr_to_charptr_to_char.

但是如果加一个typedef的话

1
typedef char *ptr_to_char;

则其实是声明了一种自定义数据类型ptr_to_char, 它等同于 char *, 所以我们可以使用它来定义指向字符数据的指针. 即

1
ptr_to_char a;

则a就是一个指向字符类型数据的指针变量.

显然,使用typedef利于简化代码.

我们应该使用typedef而不是 #define 来定义自定义数据类型, 因为 #define不能很好的处理指针类型.

例如

1
2
#define char *ptr_to_char char *
ptr_to_char a,b;

正确的声明了a为指向字符类型的指针变量,但是b却是声明为一个字符变量. 所以尽可能使用typedef而不是#define.