假设咱们要存储有关篮球运动员的信息,则可能存储Ta的姓名、工资、身高、体重、平均得分等,但愿有一种数据格式能够将这些信息存放在一个单元中。算法
所以引入告终构的概念数组
结构是用户定义的类型函数
结构中全部元素的类型能够不相同code
建立结构包括两步:orm
1.定义结构描述——它描述并标记了可以存储在结构中的各类数据类型对象
2.按描述建立结构变量(结构数据对象)内存
结构体成员默认为 publicstring
它的本质是建立了一个名为information的新的数据类型io
struct information { char name[20]; float salary; double height; };
information zhangsan; //C++容许在声明结构变量时省略关键字 struct information lisi; //或者同时在定义结构后面声明 struct information { char name[20]; float salary; double height; }wangmazi;
其中zhangsan,lisi,wangmazi都是information结构体的实例,能够被分配和拥有本身的内存,以保存其成员数据。form
尽管3个结构体变量具备不一样的名称,但每一个变量都包含具备相同名称的成员。
有两种方式初始结构体变量:使用初始化列表或构造函数
初始化结构体变量成员的最简单的方法是使用初始化列表。初始化列表是用于初始化一组内存位置的值列表。列表中的项目用逗号分隔并用大括号括起来。
定义和初始化information变量的方式是:先指定变量名,后接赋值运算符和初始化列表:
information LiHua = {"LiHua",5000,191};
也能够仅初始化结构体变量的部分红员:
information LiHua = {"LiHua",5000};
这里只有name和salary成员被初始化,height成员未初始化。可是,若是某个结构成员未被初始化,则全部跟在它后面的成员都须要保留为未初始化。使用初始化列表时,C++不提供跳过成员的方法。
还有一点很重要,不能在结构体声明中初始化结构体成员,由于结构体声明只是建立一个新的数据类型,还不存在这种类型的变量。
如下是一个名为 Employee 的结构体的声明语句,它包含一个具备两参数的构造函数,以便在建立一个 Employee 变量而不向其传递任何参数时,提供默认值:
struct Employee { string name; // 员工姓名 int vacationDays, // 容许的年假 daysUsed; //已使用的年假天数 Employee (string n ="",int d = 0) // 构造函数 { name = n; vacationDays = 10; daysUsed = d; } };
结构体成员的访问方式与类的公共成员同样,都是使用点运算符。可是,类的数据成员一般是私有的,必须经过函数访问。由于结构数据成员是公共的,因此它们能够被直接访问,而且能够像常规变量同样使用。
zhangsan.name="张三"; zhangsan.salary=4000; cout<<zhangsan.name<<endl;
定义:该数组的每一个元素都是一个结构体。
//如下语句定义了一个名为infoList的数组,它有20个元素,每一个元素都是一个information结构体 information infoList[20]; //下面的表达式引用了infoList[5]的salary成员 infoList[5].salary;
在算法竞赛中结构体的使用很是广泛,务必掌握