首先,int* p;这个语句可以理解为int*是一个新的数据类型。
举一个相似的例子,一般指向整形的指针都是这样使用的: int * p; //p是指向一个整型的指针。如果我们在前面使用了 typedef int* Pint; 则上面的方法,可以改为:Pint p; 同样是声明一个指向整形的指针。
这样typedef struct {…}* Pstr;就不难理解了,Pstr List;就是声明了一个指向struct{…}这个结构体的结构体的指针。但是这个时候List是悬垂指针,而这种情况是不能静态分配数据的, 所以可以动态的分配一个空间来让List有所指向。c++可以这么做:p=new* NList; 没有new语句,也可以这么写:List=(Pstr)malloc(sizeof(* p));
参考http://bbs.elecfans.com/jishu_1573819_1_1.html