C++ 結(jié)構(gòu)體(struct)

在本文中,您將學習C ++編程中的結(jié)構(gòu)。它是什么,如何定義它并在程序中使用它。

結(jié)構(gòu)是一個單一名稱下不同數(shù)據(jù)類型的變量的集合。它與相似,兩者都保存著不同數(shù)據(jù)類型的數(shù)據(jù)集合。

例如:您要存儲有關(guān)某個人的一些信息:其姓名,身份證號碼和薪水。您可以輕松創(chuàng)建不同的變量name, citNo, salary來分別存儲這些信息。

但是,將來,您可能希望存儲有關(guān)多個人的信息?,F(xiàn)在,您需要為每個人的每個信息創(chuàng)建不同的變量:name1, citNo1, salary1, name2, citNo2, salary2

您可以看到變量和代碼看起來有多大和混亂。另外,由于變量之間不存在任何關(guān)系(信息),因此這將是一項艱巨的任務。

更好的方法是將所有相關(guān)信息收集在一個Person下,并將其用于每個人。 現(xiàn)在,代碼看起來也更加簡潔,易讀且高效。

用一個單獨的名字Person收集的所有相關(guān)信息就是一個結(jié)構(gòu)體。

如何在C ++編程中聲明結(jié)構(gòu)體?

struct關(guān)鍵字定義一個結(jié)構(gòu)類型,后跟一個標識符(結(jié)構(gòu)的名稱)。

然后,在花括號內(nèi),可以聲明該結(jié)構(gòu)的一個或多個成員(在花括號內(nèi)聲明變量)。例如:

struct Person
{
    char name[50];
    int age;
    float salary;
};

這里定義結(jié)構(gòu)體Person,其具有三個成員:name,age和salary。

創(chuàng)建結(jié)構(gòu)時,不會分配內(nèi)存。

結(jié)構(gòu)定義只是創(chuàng)建變量的藍圖。您可以將其作為一中數(shù)據(jù)類型。當您如下定義整數(shù)時:

int foo;

int指定變量foo只能接納整數(shù)元素。 同樣,結(jié)構(gòu)定義僅指定結(jié)構(gòu)變量在定義時所擁有的屬性。

注意: 切記要以分號(;)結(jié)束結(jié)構(gòu)體的聲明

如何定義結(jié)構(gòu)體變量?

一旦你像上面那樣聲明了一個結(jié)構(gòu)體 Person。你可以定義一個結(jié)構(gòu)變量如下:

Person bill;

這里定義了一個結(jié)構(gòu)變量bill,它的類型是結(jié)構(gòu)體Person。

定義了結(jié)構(gòu)體變量后,編譯器才分配所需的內(nèi)存。

考慮到您具有32位或64位系統(tǒng),float的內(nèi)存為4字節(jié),int的內(nèi)存為4字節(jié),而char的內(nèi)存為1字節(jié)。

因此,為結(jié)構(gòu)體變量bill分配了58個字節(jié)的內(nèi)存。

如何訪問結(jié)構(gòu)體的成員?

使用點(.)運算符可以訪問結(jié)構(gòu)變量的成員。

假設(shè)您要訪問結(jié)構(gòu)變量bill的成員屬性age并給其分配值50。您可以使用以下代碼執(zhí)行此任務:

bill.age = 50;

示例:C ++結(jié)構(gòu)

C ++程序,用于將數(shù)據(jù)分配給結(jié)構(gòu)變量的成員并顯示它。

#include <iostream>
using namespace std;

struct Person
{
    char name[50];
    int age;
    float salary;
};

int main()
{
    Person p1;
    
    cout << "輸入姓名: ";
    cin.get(p1.name, 50);
    cout << "輸入年齡: ";
    cin >> p1.age;
    cout << "輸入工資: ";
    cin >> p1.salary;

    cout << "\n顯示信息:" << endl;
    cout << "姓名: " << p1.name << endl;
    cout <<"年齡: " << p1.age << endl;
    cout << "工資: " << p1.salary;

    return 0;
}

輸出結(jié)果

輸入姓名: 張小三
輸入年齡: 22
輸入工資: 12200

顯示信息:
姓名: 張小三
年齡: 22
工資: 12200

在這里,聲明一個具有三個成員name,age和salary的結(jié)構(gòu)體。

在main() 函數(shù)內(nèi)部,p1定義了一個結(jié)構(gòu)變量。然后,要求用戶輸入信息,并顯示用戶輸入的數(shù)據(jù)。

您還可以查看這些與結(jié)構(gòu)有關(guān)的教程:

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清