出一期教学吧
结构体==套娃。
1.结构体定义
//结构体入门 #include//结构体定义 struct Student { char cName[20]; char cSex; int iGrade; }student1={"hanXue",'W',3}; //student1和下面的student2都是这个结构体类型的变量; int main() { struct Student student2={"Wangjiasheng",'M',3}; //将第一个结构体中的数据输出 //注意结构体变量的引用 printf("the student1's information:n"); printf("Name: %sn",student1.cName); printf("Sex:%cn",student1.cSex); printf("Grand:%dn",student1.iGrade); //将第二个结构体中的数据输出 printf("the student2's information:n"); printf("Name: %sn",student2.cName); printf("Sex:%cn",student2.cSex); printf("Grand:%dn",student2.iGrade); return 0; }
2.结构体数组
//结构体数组 #includestruct Student { char cName[20]; int iNumber; char cSex; int iGrade; }student[5]={{"Wangjiasheng",12062212,'M',3}, {"Yulongjiao",12062213,'W',3}, {"Jiangxuehua",12062214,'W',3}, {"Zhangmeng",12062215,'W',3}, {"Hanliang",12062216,'W',3}}; int main() { int i; for(i=0;i<5;i++) { printf("NO%d student:n",i+1); printf("Name:%s,Number:%dn",student[i].cName,student[i].iNumber); printf("Sex:%c,Grade:%dn",student[i].cSex,student[i].iGrade); printf("n"); } return 0; }
3.结构体指针
读五遍书不如动手敲一遍。
//结构体指针 #includeint main() { struct Student{ char cName[20]; int iNumber; char cSex; int iGrade; }student={"SuYuQun",12061212,'W',3}; struct Student* pStruct; pStruct=&student; printf("----the studet's information----n"); //以下三种效果是等效的 //student.成员名 //(*pStudent).成员名 //pStudent.成员名 scanf("%s",&student.cName); printf("Name:%sn",student.cName);//用结构体变量引用 printf("Name:%sn",(*pStruct).cName);//用指针引用 printf("Name:%sn",pStruct->cName);//用指针引用 printf("Number:%dn",pStruct->iNumber); printf("Sex:%cn",pStruct->cSex); printf("Grade:%dn",pStruct->iGrade); return 0; }
4.结构体数组指针
#includestruct Student{ char cName[20]; int iNumber; char cSex; int iGrade; }student[5]={{"Wangjiasheng",12062212,'M',3}, {"Yulongjiao",12062213,'W',3}, {"Jiangxuehua",12062214,'W',3}, {"Zhangmeng",12062215,'W',3}, {"Hanliang",12062216,'W',3}}; int main() { struct Student* pStruct; int index; pStruct=student;//数组名就是首元素的地址 for(index=0;index<5;index++,pStruct++) { printf("NO%d student:n",index+1); printf("Name:%s,Number:%dn",pStruct->cName,pStruct->iNumber); printf("Sex:%c,Grade:%dn",pStruct->cSex,pStruct->iGrade); printf("n"); } }
5.使用结构体变量作为函数参数
//使用结构体变量作为函数参数 #includestruct Student{ char cName[20]; float fScore[3]; }student={"Suyuqun",98.5f,89.0,93.5f}; void Display(struct Student stu) { printf("---information---n"); printf("Name:%sn",stu.cName); printf("Chinese:%.2fn",stu.fScore[0]); printf("Math:%.2fn",stu.fScore[1]); printf("English:%.2fn",stu.fScore[2]); printf("Average score:%.2fn",(stu.fScore[0]+stu.fScore[1]+stu.fScore[2])/3); } int main() { Display(student); return 0; }
6.使用结构体变量的指针作为函数参数
//使用结构体变量的指针作为函数参数 #includestruct Student{ char cName[20]; float fScore[3]; }student={"Suyuqun",98.5f,89.0,93.5f}; void Display(struct Student* stu) { printf("---information---n"); printf("Name:%sn",stu->cName); printf("Chinese:%.2fn",stu->fScore[0]); printf("Math:%.2fn",stu->fScore[1]); printf("English:%.2fn",stu->fScore[2]); printf("Average score:%.2fn",(stu->fScore[0]+stu->fScore[1]+stu->fScore[2])/3); stu->fScore[2]=90.0f; } int main() { struct Student* pStruct=&student; Display(pStruct); printf("Change English:%.2fn",pStruct->fScore[2]); return 0; }
7.包含结构的结构
结构体中的结构体==套娃中套娃
//包含结构的结构 #includestruct data { int year; int month; int day; }; struct student { char name[20]; int num; char sex; struct data birthday; }student={"Suyuqun",12061212,'W',{1986,12,6}}; int main() { printf("---information---n"); printf("Name:%sn",student.name); printf("Number:%dn",student.num); printf("Sex:%cn",student.sex); printf("Birthday:%d.%d.%d.n",student.birthday.year, student.birthday.month,student.birthday.day); return 0; }



