最近在看《大話資料結構》,一邊看書一邊跑一下書中的案例,加深下理解。書中的案例都是c寫的,順便熟悉下c語言。
此處第三章線性表鏈式儲存:
typedef
struct node
node;
typedef
struct node *linklist; /* 定義linklist */
(鍊錶結點定義不是很理解,因此找了些資料。)
reference:
這個**講得很詳細,贊!)
問:關於結構體struct node *next;這麼一句**,為什麼要這麼寫?寫成int * next;行不行?
答:不行的。next是指向下乙個node,所以其型別必須是node。int * next只能指向int,而不能指向node。所以必須定義為node型別,但node是結構體,所以前面還得加上個struct。
reference:
struct stuff
;
struct stuff
zhangsan;
equals to
struct stuff
;struct stuff zhangsan;
structzhangsan;
把結構體名稱語調,這樣更簡潔,不過也不能定義其他同結構體變數了(?)
reference:
在c中最好用typedef定義乙個結構體型別
typedef
struct tagmystruct
mystruct;
tagmystruct是識別符號,mystruct是變數型別(相當於int, char等)。
上述語句實際上完成兩個操作:
1)定義乙個新的結構型別
struct tagmystruct
;
分析:tagmystruct稱為「tag」,即「標籤」,實際上是乙個臨時名字,不論是否由「typedef struct」關鍵字和「tagmystruct」一起構成這個結構型別,這個結構都存在。//不是很理解這句?
我們可以用struct tagmystruct varname來定義變數,但要注意,使用tagmystruct varname來定義變數是不對的,因為struct和tagmystruct合在一起才能表示乙個結構型別。
2)typedef為這個新的結構起了個名字,叫mystruct。
typedef
struct tagmystruct mystruct;
因此,mystruct實際上相當於struct tagmystruct,我們可以使用mystruct varname來定義變數。
那麼在宣告變數的時候就可以:stu stu1;(如果沒有typedef就必須用struct student stu1;來宣告)
這裡的stu實際上就是struct student的別名。stu==struct student
或者:
typedef
struct
stu;
那麼宣告變數為 stu stu1;
本篇開頭**段中的結構體中的typedef struct node的意思就是,為自定義的資料型別定義乙個新名字node。
第二句就是宣告自定義資料型別node。
struct student
;
c++中如果用typedef的話,又會造成區別:
struct student
stu1;//stu1是乙個變數
typedef
struct student2
stu2;//stu2是乙個結構體型別=struct student
reference:
如:struct link
a;
C語言 鍊錶 結構體
目的 1.編寫手機 薄管理程式,用結構體實現下列功能 1 手機 薄含有姓名 宅電 手機3項內容,建立含有上述資訊的 簿。2 輸入姓名,查詢此人的號碼。3 插入某人的號碼。4 輸入姓名,刪除某人的號碼。5 將以上功能分別用子函式實現,編寫主函式,可以根據使用者的需要,呼叫相應的子函式。建議用結構體和鍊...
C語言結構體和C語言鍊錶
前言 對於c語言指標方面,因為博主目前還不能夠達到自己想要的水平,所以我就不在這裡班門弄斧了,現在總結一下結構體,等再過段時間,我把指標弄的爐火純青的成都的時候,我在來獻醜吧 0v0 三 結構體型別變數的賦值於初始化 四 結構體型別陣列的定義於引用 我們之前學過一些構造型別,陣列就是其中之一,但是陣...
C語言結構體定義
c語言結構體定義在我看來類似資料庫的表 如 include include struct st1 int id char name 30 char int score int main struct st1 s1 s1.id 1 strcpy s1.name,張三 s1.m s1.score 90 ...