教材中有
typedef struct node{ ... }node;
请问就功能而言和以下有区别吗?
typedef struct{ ... /*相同内容*/ }node;
小伙看你根骨奇佳,潜力无限,来学PHP伐。
簡單點來說,一般我們取不同的名字,例如
typedef struct node_t { // 具体内容 } Node;
定義變數時,如果用node_t需要這樣寫:
node_t
struct node_t node;
如果用Node的話,可以這麼簡化來寫:
Node
Node node;
如果寫成省略掉node_t,就不能用第一種寫法了。
typedef struct { // 具体内容 } Node;
一般node_t都是用來定義鍊錶結構體的
typedef struct node_t { // 具体内容 struct node_t *next; } Node;
其實,這只是struct和typedef結合的用法,可以分割為:
struct
typedef
struct node_t { // 具体内容 }; typedef struct node_t Node;
網路搜尋一下會有很多講解的,總有你需要的這篇文章看著挺易懂的,你看下結構體定義typedef struct 用法詳解和用法小結以下是文章的正文:
typedef是型別定義的意思。 typedef struct 是為了使用這個結構體方便。
具體區別在於: 若struct node{ }這樣來定義結構體的話。在定義 node 的結構體變數時,需要這樣寫:struct node n;若用typedef,可以這樣寫:typedef struct node{}NODE; 。在申請變數時就可以這樣寫:NODE n;其實就相當於 NODE 是node 的別名。差別就在於使用時,是否可以省去struct這個關鍵字。
1 首先:在C中定義一個結構體類型時如果要用typedef:typedef struct Student{ int no; char name[12];}Stu,student;於是在宣告變數的時候就可:Stu stu1;或:student stu2;(Stu 和student 同時為Student的別名)如果沒有typedef即:struct Student{ int no; char name[12];}Stu;就必須用struct Student stu1;或struct Stu stu1;來宣告另外這裡也可以不寫Student(於是也不能struct Student stu1;了)typedef struct{ int no; char name[12];}Stu;
2其次:在c++中如果用typedef的話,又會造成區別:struct Student{ int no; char name[12];} stu1;//stu1是一個變數
typedef struct Student2{ int no; char name[12];}stu2;//stu2是結構體類型,即stu2是Student2的別名使用時可以直接存取stu1.no但是stu2則必須先定義stu2 s2;然後s2.no=10;
有區別,在結構體中如果存在struct node類型的成員,那麼第二種會報錯
你這問題我遇過:
typedef struct{ int a; char b; float c; } TypeA; typedef struct Node { int data; //这里默认的是int型,如需其他类型可直接修改。 struc tNode*next; //指向Node型变量的指针 } Node;
凡是結構型(假設名為a)內部有這樣的指標型(假設名為b),即b是用來存放和a類型相同的結構體變數位址的指標型(如圖1.2中,結點A的指標next,next所指的結點B與結點A是屬於同一結構型的),則在定義a的typedef struct語句之後都要加上a這個結構型的名字。與先前定義的結構型TypeA進行比較,會發現這裡的結構型Node在定義方法上的不同。
簡單點來說,一般我們取不同的名字,例如
定義變數時,如果用
node_t
需要這樣寫:如果用
Node
的話,可以這麼簡化來寫:如果寫成省略掉
node_t
,就不能用第一種寫法了。一般
node_t
都是用來定義鍊錶結構體的其實,這只是
struct
和typedef
結合的用法,可以分割為:網路搜尋一下會有很多講解的,總有你需要的
這篇文章看著挺易懂的,你看下結構體定義typedef struct 用法詳解和用法小結
以下是文章的正文:
typedef是型別定義的意思。 typedef struct 是為了使用這個結構體方便。
具體區別在於:
若struct node{ }這樣來定義結構體的話。在定義 node 的結構體變數時,需要這樣寫:struct node n;
若用typedef,可以這樣寫:typedef struct node{}NODE; 。在申請變數時就可以這樣寫:NODE n;其實就相當於 NODE 是node 的別名。差別就在於使用時,是否可以省去struct這個關鍵字。
1 首先:
在C中定義一個結構體類型時如果要用typedef:
typedef struct Student
{
int no;
char name[12];
}Stu,student;
於是在宣告變數的時候就可:Stu stu1;或:student stu2;(Stu 和student 同時為Student的別名)
如果沒有typedef即:
struct Student
{
int no;
char name[12];
}Stu;
就必須用struct Student stu1;或struct Stu stu1;來宣告
另外這裡也可以不寫Student(於是也不能struct Student stu1;了)
typedef struct
{
int no;
char name[12];
}Stu;
2其次:
在c++中如果用typedef的話,又會造成區別:
struct Student
{
int no;
char name[12];
} stu1;//stu1是一個變數
typedef struct Student2
{
int no;
char name[12];
}stu2;//stu2是結構體類型,即stu2是Student2的別名
使用時可以直接存取stu1.no
但是stu2則必須先定義stu2 s2;
然後s2.no=10;
有區別,在結構體中如果存在struct node類型的成員,那麼第二種會報錯
你這問題我遇過:
凡是結構型(假設名為a)內部有這樣的指標型(假設名為b),即b是用來存放和a類型相同的結構體變數位址的指標型(如圖1.2中,結點A的指標next,next所指的結點B與結點A是屬於同一結構型的),則在定義a的typedef struct語句之後都要加上a這個結構型的名字。與先前定義的結構型TypeA進行比較,會發現這裡的結構型Node在定義方法上的不同。