1、首先明白typedef是一个整体,这区别与#define,#define可以当两部分来看。
例如:
typedef int size_t; //这个是一个整体,不能理解为用size_t 替换int
#define pi 3.14 //这个是用3.14直接替换pi即可。
小结:typedef 可以理解为一个前缀,然后 int size_t ; 的形式更像是形如定义变量 int temp ; 的形式。
2、typedef应用举例:
1)简单数据类型的别名
例如:
typedef int size_t; //将int数据类型重起了个名字size_t
int temp; 等价于 size_t temp;
2)指针类型的别名
例如:
typedef char* pch; //将char* 指针重起了名字为 pch ,两个字符变为一个字符,书写更简单
char* next; 等价于 pch next;
3)数组类型的别名
例如:
typedef int num[10]; //将数组类型 int [10] 重起了一个名字为num, 两个字符变为一个字符,书写更简单
int a1[10]; 等价于 num a2;
a1[0] = 1; 等价于a2 [0] =1; //使用的时候一样,只是定义的时候简单了。
4)结构体类型的别名
例如:
typedef struct unit{
int a;
char c;
} SUNIT; //为结构体 struct unit{ int a; char c;}; 重起了个名字为SUNIT,结构更简单。
struct unit mystruct; 等价于 SUNIT mystruct ;
5)函数指针类型的别名
例如:
typedef void (*func) (void); //将函数指针 void (*) (void) 重命名为func。
void (*myfunc) (void); 等价于 func myfunc;
总结:typedef不是两部分,不是后部分对前部分的替换,typedef是一个整体,其形式上,抛开typedef这个符号外,剩下的部分与定义变量的形式十分相似。