struct结构体
打比赛的时候发现struct还是不怎么用的习惯,有些东西缕不太顺,所以仔细学习一下。
一. 首先是结构体的声明
定义结构变量的一般格式为:
struct 结构名 {
类型 变量名;
类型 变量名;
......
} 结构变量;
结构名是结构的标识符不是变量名。 类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和无值型)。
有一下三种写法:
struct String{ char name[8]; int age; char sex[2]; char depart[20]; float wage1,wage2,wage3,wage4,wage5; }person; struct String{ char name[8]; int age; char sex[2]; char depart[20]; float wage1,wage2,wage3,wage4,wage 5; }; struct String person; struct{ char name[8]; int age; char sex[2]; char depart[20]; float wage1,wage2,wage3,wage4,wage5; }a,b;
三者之间的区别:
1、第一种定义了一个结构名为String的结构变量preson,如果生略变量名person,则变成对结构的说明。用已说明的结构名也可定义结构变量。就可以变成第二种了。
2、第二种 是定义了一个结构名为Sting的结构体。如果要多声明几个变量名,则世界在后面struct String a,b,c,d....;直接来用。
3、第三种是省略了结构名。如果省略结构名, 则称之为无名结构, 这种情况常常出现在函数内部。
另外,结构体也有数组的功能。
struct student{ int num; char name[20]; int age; }stu[2];
我们定义了一个结构体类型是struct student,它有三个成员分别是num, name, age。用这样的结构体类型定义了一个结构体数组stu[2],该数组有两个元素,分别是 stu[0], stu[1].那如何给数组元素中的成员赋值呢?
结构体数组的引用:
stu[0].num = 100;
strcpy( stu[0].name,“Zhangsan” );
stu[0].age = 18;
来个简单的样例:
#include<iostream> #include<algorithm> using namespace std; struct student{ int num; char name[20]; float score; }stu[3]={ {101,"aa",49}, {102,"bb",88}, {103,"cc",99} }; int main(){ int num=0; float ave,sum=0; for(int i=0;i<3;i++){ sum+=stu[i].score; if(stu[i].score<60) num++; } ave=sum/5; cout<<ave<<" "<<num<<endl; return 0; }