typedef
c语言的2种类型:内建类型与用户自定义类型
- 内建类型DAT、自定义类型UDT
typedef定义类型而非变量
- 类型是一个数据模板,变量是一个实在的数据。类型不占内存,变量占内存
- 面向对象的语言中:类型就是类class,变量就是对象
typedef与#define宏的区别
typedef char* pChar
#define pChar char*
typedef与结构体
- 结构体在使用时都是先定义结构体类型,再用结构体类型去定义变量
- C语言的语法规定:结构体类型使用时必须是struct 结构体类型名 结构体变量名;这样的方式来定义变量
- 使用typedef一次来定义2个类型,分别是结构体变量类型,和结构体变量指针类型
typedef和const
- typedef int *PINT; const PINT p2;相当于是int *const p2;
- typedef int *PINT; PINT const p2;相当于是int *const p2;
- 如果确实想得到const int *p;这种效果,只能typedef const int *CPINT;CPINT p1;
使用typedef的重要意义(简化类型、创造平台无关类型)
char *(*)(char *,char *);
typedef char *(*)(char *,char *);
- 很多编程体系下,人们倾向于不使用int,double等C语言内建类型,因为这些类型本身和平台相关(譬如int在16位机器上是16位的,在32位机器上就是32位的)。为了解决这个问题,很多程序使用自定义的中间类型来做缓冲。 内核中先定义:
typedef int size_t;
然后在特定的编码下用size_t来替代int(譬如还可能有typedef int len_t
)