struct 和 typedef struct 的區別
阿新 • • 發佈:2018-12-27
在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將是截然不同的三個物件。
但在c++裡很簡單,直接 struct Student { int a; }; 於是就定義了結構體型別Student,宣告變數時直接Student stu2; 在c++中如果用typedef的話,又會造成區別: struct Student
typedef struct Student2 { int a;
使用時可以直接訪問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將是截然不同的三個物件。