C++結構體基礎知識


結構體


一、什么是結構體

假設我們要存儲有關籃球運動員的信息,則可能存儲Ta的姓名、工資、身高、體重、平均得分等,希望有一種數據格式可以將這些信息存放在一個單元中。

因此引入了結構的概念

  • 結構是用戶定義的類型

  • 結構中所有元素的類型可以不相同

  • 創建結構包括兩步:

    1.定義結構描述——它描述並標記了能夠存儲在結構中的各種數據類型

    2.按描述創建結構變量(結構數據對象)

  • 結構體成員默認為 public

1.定義結構:

它的本質是創建了一個名為information的新的數據類型

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結構體的實例,可以被分配和擁有自己的內存,以保存其成員數據。

盡管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;

二、結構體數組

定義:該數組的每個元素都是一個結構體。

//以下語句定義了一個名為infoList的數組,它有20個元素,每個元素都是一個information結構體
information infoList[20];
//下面的表達式引用了infoList[5]的salary成員
infoList[5].salary;

在算法競賽中結構體的使用非常普遍,務必掌握


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM