1. 程式人生 > >C語言-結構體的定義及使用

C語言-結構體的定義及使用

為了方便分配記憶體,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;
}