C++结构体基础知识

结构体


1、什么是结构体

假设咱们要存储有关篮球运动员的信息,则可能存储Ta的姓名、工资、身高、体重、平均得分等,但愿有一种数据格式能够将这些信息存放在一个单元中。算法

所以引入告终构的概念数组

  • 结构是用户定义的类型函数

  • 结构中全部元素的类型能够不相同code

  • 建立结构包括两步:orm

    1.定义结构描述——它描述并标记了可以存储在结构中的各类数据类型对象

    2.按描述建立结构变量(结构数据对象)内存

  • 结构体成员默认为 publicstring

1.定义结构:

它的本质是建立了一个名为information的新的数据类型io

struct information
{
    char name[20];
    float salary;
    double height;
};

2.声明结构变量:

information zhangsan;           //C++容许在声明结构变量时省略关键字
struct information lisi;
//或者同时在定义结构后面声明
struct information
{
    char name[20];
    float salary;
    double height;
}wangmazi;

其中zhangsan,lisi,wangmazi都是information结构体的实例,能够被分配和拥有本身的内存,以保存其成员数据。form

尽管3个结构体变量具备不一样的名称,但每一个变量都包含具备相同名称的成员。

3.初始化结构体:

有两种方式初始结构体变量:使用初始化列表或构造函数

1)初始化列表

初始化结构体变量成员的最简单的方法是使用初始化列表。初始化列表是用于初始化一组内存位置的值列表。列表中的项目用逗号分隔并用大括号括起来。

定义和初始化information变量的方式是:先指定变量名,后接赋值运算符和初始化列表:

information LiHua = {"LiHua",5000,191};

也能够仅初始化结构体变量的部分红员:

information LiHua = {"LiHua",5000};

这里只有name和salary成员被初始化,height成员未初始化。可是,若是某个结构成员未被初始化,则全部跟在它后面的成员都须要保留为未初始化。使用初始化列表时,C++不提供跳过成员的方法。

还有一点很重要,不能在结构体声明中初始化结构体成员,由于结构体声明只是建立一个新的数据类型,还不存在这种类型的变量。

2)构造函数初始化结构体

如下是一个名为 Employee 的结构体的声明语句,它包含一个具备两参数的构造函数,以便在建立一个 Employee 变量而不向其传递任何参数时,提供默认值:

struct Employee
{
    string name;    // 员工姓名
    int vacationDays,    // 容许的年假
    daysUsed;    //已使用的年假天数
    Employee (string n ="",int d = 0)    // 构造函数
    {
        name = n;
        vacationDays = 10;
        daysUsed = d;
    }
};

4.访问结构体成员:

结构体成员的访问方式与类的公共成员同样,都是使用点运算符。可是,类的数据成员一般是私有的,必须经过函数访问。由于结构数据成员是公共的,因此它们能够被直接访问,而且能够像常规变量同样使用。

zhangsan.name="张三";
zhangsan.salary=4000;
cout<<zhangsan.name<<endl;

2、结构体数组

定义:该数组的每一个元素都是一个结构体。

//如下语句定义了一个名为infoList的数组,它有20个元素,每一个元素都是一个information结构体
information infoList[20];
//下面的表达式引用了infoList[5]的salary成员
infoList[5].salary;

在算法竞赛中结构体的使用很是广泛,务必掌握

相关文章
相关标签/搜索