C語言-結構體的定義及使用
阿新 • • 發佈:2019-01-26
為了方便分配記憶體,C語言中為使用者提供了佔用記憶體不同長度的資料型別,如int,float,char等,當同樣地資料型別有序的組合在一起時組成了陣列,但是實際應用過程中常常會遇到不同的資料型別組合在一起的情況,比如定義一個人時,需要年齡,性別,住址等資訊。用C語言描述時即是int(年齡),char(性別),char[](家庭住址),當把不同的資料型別組合在一起時,就組成了結構體。
C語言的結構體定義形式為struct 結構體名{成員列表};不同的成員列表用分號‘;’隔開。
當使用定義的結構體,定義結構體變數時,有兩種方式:
1 定義結構體的同時初始化結構體變數,如
struct student{int age;*char name;int score} stu1 ,stu2;//定義了兩個結構體變數stu1,stu2;
2 先定義結構體,後初始化變數,如
struct student{int age;*char name;int score};//先定義結構體
struct student stu1;
stu1.age = 20;stu1.name = "張三";stu1.score = 99;
和C語言中其他的基本資料型別一樣,結構體資料型別也可以用來定義結構體陣列,結構體陣列的初始化同樣有兩種方式:定義的同時初始化和先定義後初始化。
下面是關於結構體陣列的一個應用:
#include "stdafx.h" int main(int argc, char* argv[]) { //結構體陣列的應用 struct student{ char name[20]; int score; } class[5] = { {"張三",59}, {"李四",60}, {"王五",80}, {"周七",90}, {"朱八",100} }; int sum = 0; int count = 0; for(int i = 0;i < 5;i++) { sum += class[i].score; if(class[i].score < 60) { count++; printf("第%d個不及格的人\n姓名:%s\n分數:%d\n\n", count,class[i].name,class[i].score); } } float aveScore = (float)sum/5; printf("班級平均分:%.2f 不及格人數:%d\n",aveScore,count); return 0; }