1. 程式人生 > >struct 和 typedef struct 的區別

struct 和 typedef struct 的區別

在C中定義一個結構體型別要用typedef:    typedef struct Student     {         int a;     }Stu; 宣告:Stu stu1;(如果沒有typedef就必須用struct Student stu1;來宣告) 這裡的Stu實際上就是struct Student的別名。Stu==struct Student 另外:     typedef struct     {         int a;
    }Stu; 這裡也可以不寫Student ,於是也不能struct Student stu1;了,必須是Stu stu1;
但在c++裡很簡單,直接     struct Student     {         int a;     };     於是就定義了結構體型別Student,宣告變數時直接Student stu2; 在c++中如果用typedef的話,又會造成區別:     struct   Student   
    {            int   a;        }stu1;//stu1是一個變數  
      typedef   struct   Student2        {            int   a;   
    }stu2;//stu2是一個結構體型別==struct Student  


使用時可以直接訪問stu1.a, 但是stu2則必須先   stu2 s2; 然後可以訪問s2.a 如果在c程式中我們寫:     typedef struct       {         int num;         int age;     }a,b,c; 這相當於     typedef struct       {         int num;         int age;     }a;     typedef a b;     typedef a c; 也就是說a,b,c三者都是結構體型別。宣告變數時用任何一個都可以,在c++中也是如此。但是你要注意的是這個在c++中如果寫掉了typedef關鍵字,那麼a,b,c將是截然不同的三個物件。