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;

在算法競賽中結構體的使用很是廣泛,務必掌握

相關文章
相關標籤/搜索