在本文中,您將學習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)體。
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)體 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)變量的成員。
假設(shè)您要訪問結(jié)構(gòu)變量bill的成員屬性age并給其分配值50。您可以使用以下代碼執(zhí)行此任務:
bill.age = 50;
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)的教程: