typedef与指针

实例

typedef struct LNode{  // Singly linked list Node
     int    data; 
     struct LNode   *next;   // Pointer to next node
}LNode,*LinkList;


int ListInsert_L(LinkList  &L, int i, int e)
{  LinkList s,p;
   int j;
   p = L; j = 0;
   while(p&&j<i-1){p=p->next;++j;}
   if(!p||j>i-1) return 0;
   s = (LNode *)malloc(sizeof(LNode));
   if(!s) return 0;
   s->data = e; 
   s->next = p->next; p->next = s;
   return 1;      
 }
  • LNode : 是为struct LNode 创建一个简单的别名,以后就用LNode代替它了。
  • *LinkList : 表示定义一种数据类型,该类型是指向结构体的

例如

tyoedef int *Pint;
表示的意思并不是定义一个指向int型指针,而是表示定义一种新的数据类型,这种类型是指向int型的指针,那么如果下面有Pint a;则这时的a是指向int型指针

同理
typedef struct 
{
...
}*Pstr; 
表示定义一种数据类型,该类型是指向结构体的
所以下面如果有*Pstr  p;则p是一个指向结构体的指针
但是很显然p是悬垂指针,而题中这种情况是不能静态分配数据的
所以可以动态的分配一个空间来让p有所指向
C++可以这么做:p=new *p
C没有new语句,那么可以这么做:p=(Pstr)malloc(sizeof(*p));

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×