結構體屬於一種資料構造型別,它是由若干「成員」組成的。每乙個成員可以是乙個基本資料型別或者又是乙個構造型別。
一、結構體的定義:
struct 結構名 {成員列表};
例如:struct stu {
int num;
char name[30];
char ***;
float score;
};
在這個結構定義中,結構名為stu,該結構由四個「成員」組成,包括num(整型變數),name(字元陣列),***(字元變數),score(實型變數)。由此可見,結構體是一種由型別不同的若干有序變數組成的集合。
二、結構型別變數的說明
1)先定義結構體,再說明結構變數
struct stu {
int num;
char name[30];
char ***;
float score; };
struct stu people1,people2;//說明兩個變數people1和people2為stu結構型別。也可以使用巨集定義使乙個符號常量來表示乙個結構型別。
例如:#define stu struct stu
stu ;
stu people1,people2;
注意:1.結構體型別與結構體變數是不同的概念,不能混同。
2.對結構體變數中的成員,可以單獨使用。
2 )在定義結構型別的同時說明結構變數
struct stu
people1,people2;//說明了people1,people2變數為stu型別後,就可以向這兩個變數中的各個成員賦值。(成員就是num,name,***,score)
3)結構變數成員的表示方法
一般形式: 結構變數名.成員名(中間的點不可省略,也不可以用空格代替)
例如: people1.*** 就是代表第乙個人的性別
說明:結構體變數不能整體引用,只能引用變數成員。
4)結構變數賦值
意思就是給各成員賦值。可用輸入語句或賦值語句來完成。
int main(int argc,const char *argv)
people1,people2;
people1.num = 66;
people1.name = "leo";
printf("intput *** and score\n");
scanf("%c%f",&people1.***,&people1.score);
people2 = people1;
printf("number = %d\nname = %s\n",people2.num,people2.name);
printf("*** = %c\nscore = %f\n",people2.***,people2.score); }
return 0; }
本程式中用賦值語句給num和name兩個成員賦值,用scanf函式輸入性別和成績的值,然後把people1的所有成員的值整體賦予people2,最後分別輸出people2的各個成員值。
5)結構體型別巢狀使用
總結:
1.當乙個結構體型別定義在函式之外時,它具有全域性作用域;若定義在任一對花括號之內,則具有區域性作用御,其作用範圍是所在花括號構成的快。
2.結構體是一種複雜的資料型別,是數目固定、型別不同的若干成員的集合,結構體型別的定義只是列出了該結構的組成情況,編譯系統並未因此而分配儲存空間,當定義了結構體型別的變數或陣列後,編譯系統才會分配儲存空間。
3.如果有兩個結構體的成員型別、名稱、個數相同,但結構體名不同,也是兩個不同的結構型別。
個人心語:
C語言之結構體
一 什麼是結構體 結構體是不同型別的資料組合成乙個有機整體。例如 學生的學號 姓名 性別 成績 位址 這些都是乙個學生的屬性,把這些屬性組織成乙個組合,組合中包含不同的資料型別,c和c 允許指定這樣的資料型別,稱為結構體。struct student 申明乙個結構體型別 struct是結構體申明的關...
C語言之結構體
在c語言中,可以使用結構體 struct 來存放一組不同型別的資料。結構體的定義形式為 struct 結構體名 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員 member 請看下面的乙個例子 struct stu stu 為結構...
C語言之結構體
在c語言中,有一種型別聽著很任性,叫做自定義型別。顧名思義,這種型別是程式設計師自己定義的一種型別,它和陣列很相似,但也有一些區別。自定義型別包含以下幾種 結構體 列舉 聯合 結構體就是將具有不同或相同的型別放在一起的聚合型別。可能聽著有些像順口溜,上一段 捋一捋。struct peo a 在 中我...