C語言結構體學習還是很簡單的,有些人對結構體的學習很迷茫,那就是因為你沒有掌握方法來學,今天分享一下學習C語言結構體的方法,一起來看:
【1】定義
【2】結構體類型變量的定義方法
【3】結構體普通變量的使用形式
【4】結構體大小
【5】結構體指針
【6】結構體數(shù)組
【7】結構體數(shù)組的使用
【1】定義
不同類型的數(shù)據(jù)是互相聯(lián)系組成了一個有機的整體。此時,就要用到一種新的構造類型數(shù)據(jù)——結構體(structure),簡稱結構。
定義一個結構體類型的一般形式為:
struct 結構體名
{
數(shù)據(jù)類型
數(shù)據(jù)類型
成員名1;
成員名2;
:
數(shù)據(jù)類型
成員名n;
};
在大括號中的內容也稱為“成員列表”或“域表”,其中每個成員名的命名規(guī)則與變量名相同;數(shù)據(jù)類型可以是基本變量類型和數(shù)組類型,或者是一個結構體類型。用分號“;”作為結束符。整個結構的定義也用分號作為結束符
說明:結構體類型中的成員名可以與程序中的變量名相同,二者并不代表同一對象,編譯程序可以自動對它們進行區(qū)分。
最后,總結一下結構體類型的特點:
(1)結構體類型是用戶自行構造的。
(2)它由若干不同的基本數(shù)據(jù)類型的數(shù)據(jù)構成。
(3)它屬于C語言的一種數(shù)據(jù)類型,與整型、實型相當。
//定義它時不分配空間,只有用它定義變量時才分配空間。//注意:結構體需要在程序的最上面定義//注意:定義一個結構體時,沒有開辟空間
【2】結構體類型變量的定義方法
這是C語言中定義結構體類型變量最常見的方式
struct 結構體名
(1)先定義結構體類型再定義變量 {
名 成員列表;
};
struct 結構體名變量名;
struct 結構體名
(2)在定義類型的同時定義變量 {
成員列表;
}變量名;
struct//沒有結構體名
(3)直接定義結構類型變量 {
成員列表
}變量名;
struct stu//有名結構體
{
int id;
char name[N];
struct//一般在結構體內部再定義一個結構體,則需
要使用無名結構體
(4)嵌套定義結構體變量{
int year;
int mon;
int day;
}birthday; birthday為stu內部成員的變量的名字
int score;
char sex;
};
【3】結構體普通變量的使用形式
使用結構體變量訪問結構體成員
結構體變量的成員用以下一般形式表示:
結構體變量名.成員名
【4】結構體大小
一個結構體變量占用內存的實際大小,也可以利用sizeof求出。它的運算表達式
為:
sizeof(運算量)
注意: 4 字節(jié)對齊,
若某一變量所占字節(jié)為4字節(jié)或是4字節(jié)的倍數(shù)的情況下(int、float、double、long),它之前的變量所占空間若不為4的倍數(shù)(char、short),則需將其補齊為4的倍數(shù)
例如:char ch;
int i; // 則ch同樣占據(jù)4字節(jié)
char ch2;
short s;
long l; // ch2 與 s 共同占據(jù)4字節(jié),l 占據(jù) 4 字節(jié)
【5】結構體指針
//結構體指針變量訪問成員,通常使用x->或者(*x)
【6】結構體數(shù)組
具有相同結構體類型的結構體變量也可以組成數(shù)組,稱它們?yōu)榻Y構體數(shù)組。
結構體數(shù)組的定義形式如下:
struct 結構體名
(1)先定義結構體類型,再用它定義結構體數(shù){
組。成員表列;
};
struct 結構體名數(shù)組名[元素個數(shù)]
(2)在定義結構體類型同時定義結構體數(shù)組。結構體數(shù)組的定義形式如下:
struct 結構體名
{
成員表列;
}數(shù)組名[元素個數(shù)];
結構體數(shù)組的定義形式如下:
struct//沒有結構體名
(3)直接定義結構體數(shù)組{
成員表列;
}數(shù)組名[元素個數(shù)];
【7】結構體數(shù)組的使用
(1)引用某一元素中的成員。
(2)可以將一個結構體數(shù)組元素值賦給同一結構體類型的數(shù)組中的另一個元素,
或賦給同一類型的變量。
//結構體數(shù)組本質上是一個數(shù)組,所以不能通過數(shù)組名進行賦值
struct stu t[3];
//t = s;
//數(shù)組元素相當于變量,所以可以使用結構體數(shù)組元素進行賦值 t[0] = s[0];
t[1] = s[1];
t[2] = s[2];
(3)不能把結構體數(shù)組元素作為一個整體直接進行輸入輸出。