一、結構體的定義
陣列(array)是一組具有相同型別的資料的集合。但在實際的程式設計過程中,我們往往還需要一組型別不同的資料,例如對於學生資訊登記表,姓名為字串,學號為整數,年齡為整數,所在的學習小組為字元,成績為小數,因為資料型別不同,顯然不能用乙個陣列來存放。
結構體(struct)可以來存放一組不同型別的資料。其是c語言中聚合資料型別(aggregate data type)的一類。結構體可以被宣告為變數、指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的型別,成員一般用名字訪問。
結構體的定義形式為:
struct結構體名;
例如:
structstu;
定義結構體變數:
struct stu stu1,stu2;
或者在定義結構體的同時定義變數:
structstustu1,stu2;
常用的是利用typedef為struct stu取別名:
typedef structstustudent;
student stu1, stu2;
給結構體變數賦值:
stu1.name = "tom"
; stu1.num = 12
; stu1.age = 18
; stu1.group = 'a'
; stu1.score = 136.5;
二、結構體陣列的定義
//賦值struct stu stu1[5]; //
或student stu1[5];
//賦值
class[5] =,,,
,}
結構體陣列的使用,例如,
獲取 wang ming 的成績:stu1[4].score;
修改 li ping 的學習小組:class[0].group = 'b';
三、結構體指標
當乙個指標變數指向結構體時,我們就稱它為結構體指標。c語言結構體指標
的定義形式一般為:
struct 結構體名 *變數名;
注意,結構體變數名和陣列名不同,陣列名在表示式中會被轉換為陣列指標,而結構體變數名不會,無論在任何表示式中它表示的都是整個集合本身,要想取得結構體變數的位址,必須在前面加&
,所以給 pstu 賦值只能寫作:
struct stu *pstu = &stu1;
獲取結構體成員:.
的優先順序高於*
,(*pointer)
兩邊的括號不能少。
(*pointer).membername
或:->
是乙個新的運算子,可以通過結構體指標直接取得結構體成員;
pointer->membername
結構體指標作為函式引數:
結構體變數名代表的是整個集合本身,作為函式引數時傳遞的整個集合,也就是所有成員,而不是像陣列一樣被編譯器轉換成乙個指標。如果結構體成員較多,尤其是成員為陣列時,傳送的時間和空間開銷會很大,影響程式的執行效率。所以最好的辦法就是使用結構體指標,這時由實參傳向形參的只是乙個位址,非常快速。
注意:結構體陣列指標的使用(結構體陣列變數名前不需要加&)
#include structstustus =,,,
,}, *ps;
intmain()
return0;
}
C語言 資料結構 結構體 LinkList
結構體是c程式設計中一種使用者可自定義的資料型別,它允許你儲存不同的資料型別的資料項。為了定義結構,必須使用struct語句。struct語句定義了乙個包含多個成員的新的資料型別。struct ta ariable name 其中tag為結構體標籤,elemtype代表資料型別,比如說int,flo...
C 語言中的結構體(資料結構)
結構體是在資料結構中經常使用的一類,下面對結構體進行一些知識的補充 結構體宣告的基本形式 struct tag variable list 引數解釋 tag 結構體的名字 member list 成員列表 variable list 變數列表 在結構體宣告的時候,我們常會看到下面兩種宣告的方式 方式...
C 資料結構(結構體struct)
定義結構體 下面是宣告乙個結構體型別 mybook 變數為 book 定義結構體 struct mybook book 訪問結構體 為了訪問結構的成員,我們使用 成員訪問運算子 成員訪問運算子是結構變數名稱和我們要訪問的結構成員之間的乙個句號。void getstruct book void get...