1. 程式人生 > >C的結構定義:typedef struct與struct的區別

C的結構定義:typedef struct與struct的區別

struct student{};struct student a;//定義結構student,再定義其變數a

而   “struct student{}a”  與上等同

而typedef struct student{}a;其中的a 只是結構體struct的一個類型別名,就是給這種資料型別起一個別的名字

typedef struct LNode {

    ElemType data;

    struct LNode *next;

}*LinkList;//類型別名

*LinkList 表示 LinkList是一個 struct LNode *的類型別名,也就是
LinkList 與 struct LNode * 是等價的,在程式中,這兩個是可以互換的,作用是等同的。

typedef是型別重定義符,這裡是因為C語言使用結構體時都要加上struct作為字首,如:
struct LNode *p,*q; //定義p,q兩個結構體指標
如果typedef把 struct LNode *重新定義為LinkList後,就可以這樣簡單地寫了:
LinkList p,q; //定義兩個結構體指標p,q
兩者作用相同,但是後者更加清晰和容易明白,就是進行簡化了