typedef 的常见用法
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,
// 和一个字符变量;
以下则可行:
typedef char* PCHAR;
PCHAR pa, pb;
这种用法很有用,特别是char* pa, pb的定义,初学者往往认为是定义了两个字符型指针,其实不是,而用typedef char* PCHAR就不会出现这样的问题,减少了错误的发生。
那struct LIST{
...
};
typedef struct LIST *list;
此处可类似比较来理解.
typedef int *Pint;表示的意思并不是定义一个指向int型指针,而是表示定义一种新的数据类型,这种类型是指向int型的指针
所以: Pint a;
typedef struct {...}*Pstr; 表示定义一种数据类型,该类型是指向结构体的所以下面如果有Pstr p;
则p是一个指向结构体的指针但是很显然p是悬垂指针,不能静态分配数据.所以可以动态的分配一个空间来让p有所指向C++可以这么做:
p=new *pC
没有new语句,那么可以这么做:
p=(Pstr)malloc(sizeof(*p));