嵌入式學習筆記:c語言結構體(ti)學習方法
時間:2018-09-04 來源:未知(zhi)
C語言結構體學習還是(shi)很簡單(dan)的,有(you)些人對結構體的學習很迷茫(mang),那就(jiu)是(shi)因(yin)為你沒(mei)有(you)掌(zhang)握方法(fa)來學,今(jin)天分享一(yi)下學習C語言結構體的方法(fa),一(yi)起來看:
【1】定義
【2】結構體類型變量的定義方法
【3】結構(gou)體普通變量的(de)使用(yong)形式
【4】結構體大小
【5】結構體(ti)指(zhi)針
【6】結構體(ti)數組
【7】結(jie)構體數組(zu)的使用
【1】定義
不同類(lei)型的(de)(de)數據(ju)是互相聯(lian)系組成了一個有(you)機的(de)(de)整體。此時,就要用到一種新的(de)(de)構(gou)造類(lei)型數據(ju)——結構(gou)體(structure),簡稱結構(gou)。
定義(yi)一(yi)個結構體類型的(de)一(yi)般形式為:
struct 結(jie)構體名
{
數據類型
數據類型
成員名1;
成員名2;
:
數據類型
成員名n;
};
在大括號中(zhong)的(de)內容(rong)也稱(cheng)為“成員(yuan)列表(biao)”或“域表(biao)”,其中(zhong)每個(ge)成員(yuan)名的(de)命名規則與變(bian)量名相同;數據類型可以是(shi)基(ji)本變(bian)量類型和數組類型,或者(zhe)是(shi)一個(ge)結(jie)(jie)(jie)構體類型。用(yong)分(fen)號“;”作(zuo)為結(jie)(jie)(jie)束(shu)符。整個(ge)結(jie)(jie)(jie)構的(de)定義也用(yong)分(fen)號作(zuo)為結(jie)(jie)(jie)束(shu)符
說(shuo)明(ming):結構體類型中的成員名可(ke)以(yi)與(yu)程(cheng)序中的變量(liang)名相同,二者并(bing)不代表同一對象,編譯程(cheng)序可(ke)以(yi)自動(dong)對它們進行區分(fen)。
最后,總結(jie)(jie)一下結(jie)(jie)構體類型的特點:
(1)結構(gou)體(ti)類型是用戶自行構(gou)造的。
(2)它由若干(gan)不同的(de)基本(ben)數據(ju)類型(xing)的(de)數據(ju)構成。
(3)它屬(shu)于C語言的一種數據類型(xing),與整型(xing)、實型(xing)相當(dang)。
//定(ding)義它時不分配空間(jian),只有(you)用(yong)它定(ding)義變量時才分配空間(jian)。//注意:結構體(ti)需(xu)要在程序的最(zui)上面(mian)定(ding)義//注意:定(ding)義一個結構體(ti)時,沒(mei)有(you)開(kai)辟空間(jian)
【2】結構體類型變量的定義(yi)方(fang)法
這是(shi)C語言中定義結構體類型變量最常見的方式
struct 結構體名
(1)先定義結構體類(lei)型再(zai)定義變量 {
名 成員列(lie)表;
};
struct 結構(gou)體名變量名;
struct 結構體名
(2)在定義(yi)類(lei)型的同(tong)時(shi)定義(yi)變量 {
成員列表;
}變量名;
struct//沒(mei)有(you)結構體名
(3)直接定義結構類(lei)型變量 {
成員列表
}變量名;
struct stu//有名結構(gou)體
{
int id;
char name[N];
struct//一(yi)般在(zai)結(jie)構體內部再定義(yi)一(yi)個結(jie)構體,則需
要(yao)使(shi)用無名結(jie)構體
(4)嵌套(tao)定義結構(gou)體變量{
int year;
int mon;
int day;
}birthday; birthday為(wei)stu內部成員的(de)變量的(de)名字
int score;
char sex;
};
【3】結(jie)構體普通變量的使(shi)用(yong)形(xing)式
使用結構(gou)體(ti)變量(liang)訪問結構(gou)體(ti)成員(yuan)
結構體變量的成員用以下一般形式(shi)表示(shi):
結構體變量名(ming).成員名(ming)


【4】結構體大小
一(yi)個(ge)結(jie)構體(ti)變量占用內存的(de)實際大小(xiao),也可以利用sizeof求出(chu)。它的(de)運算(suan)表達式
為:
sizeof(運算(suan)量)
注意: 4 字(zi)節對(dui)齊(qi),
若某一變量所占字(zi)(zi)節(jie)(jie)為4字(zi)(zi)節(jie)(jie)或是4字(zi)(zi)節(jie)(jie)的(de)(de)倍(bei)數的(de)(de)情況(kuang)下(xia)(int、float、double、long),它之前的(de)(de)變量所占空間若不(bu)為4的(de)(de)倍(bei)數(char、short),則需將其補齊為4的(de)(de)倍(bei)數
例如:char ch;
int i; // 則ch同樣占(zhan)據4字節
char ch2;
short s;
long l; // ch2 與 s 共同占據(ju)4字節(jie),l 占據(ju) 4 字節(jie)
【5】結構(gou)體(ti)指針
//結構體指針變量訪問(wen)成員,通常使用x->或者(*x)
【6】結構體數組(zu)
具有相同(tong)結(jie)構(gou)體(ti)類型的(de)結(jie)構(gou)體(ti)變量也可以(yi)組(zu)成(cheng)數組(zu),稱它們為(wei)結(jie)構(gou)體(ti)數組(zu)。
結構體數組的(de)定義形式如下:
struct 結(jie)構體名
(1)先(xian)定義(yi)結(jie)構(gou)體類型(xing),再用它定義(yi)結(jie)構(gou)體數{
組(zu)。成(cheng)員(yuan)表列(lie);
};
struct 結構體名數組名[元素個數]
(2)在定義(yi)(yi)結構(gou)體(ti)類型同時(shi)定義(yi)(yi)結構(gou)體(ti)數(shu)組。結構(gou)體(ti)數(shu)組的定義(yi)(yi)形式如(ru)下:
struct 結(jie)構體名
{
成員表列;
}數組名[元素個數];
結構體數(shu)組的定義形式(shi)如下:
struct//沒(mei)有結構體名
(3)直(zhi)接定(ding)義(yi)結構體數組{
成員表列;
}數(shu)組名(ming)[元素個(ge)數(shu)];
【7】結構體數組的使用
(1)引用某(mou)一元素(su)中(zhong)的成員(yuan)。
(2)可以(yi)將(jiang)一(yi)個(ge)結構體(ti)數(shu)組元素值賦給同(tong)一(yi)結構體(ti)類型的數(shu)組中(zhong)的另(ling)一(yi)個(ge)元素,
或賦給同一類(lei)型(xing)的變量。
//結構體數組(zu)(zu)(zu)本質(zhi)上是一個數組(zu)(zu)(zu),所以不能通過(guo)數組(zu)(zu)(zu)名進行賦值
struct stu t[3];
//t = s;
//數組元(yuan)素(su)相當于變量,所以可(ke)以使用結構體數組元(yuan)素(su)進行賦值 t[0] = s[0];
t[1] = s[1];
t[2] = s[2];
(3)不能把結構(gou)體數組元素作為一個整(zheng)體直接進行輸(shu)入輸(shu)出。

