在本文中,您將學(xué)習(xí)C ++編程中的結(jié)構(gòu)。它是什么,如何定義它并在程序中使用它。
結(jié)構(gòu)是一個(gè)單一名稱下不同數(shù)據(jù)類型的變量的集合。它與類相似,兩者都保存著不同數(shù)據(jù)類型的數(shù)據(jù)集合。
例如:您要存儲(chǔ)有關(guān)某個(gè)人的一些信息:其姓名,身份證號(hào)碼和薪水。您可以輕松創(chuàng)建不同的變量name, citNo, salary來分別存儲(chǔ)這些信息。
但是,將來,您可能希望存儲(chǔ)有關(guān)多個(gè)人的信息?,F(xiàn)在,您需要為每個(gè)人的每個(gè)信息創(chuàng)建不同的變量:name1, citNo1, salary1, name2, citNo2, salary2
您可以看到變量和代碼看起來有多大和混亂。另外,由于變量之間不存在任何關(guān)系(信息),因此這將是一項(xiàng)艱巨的任務(wù)。
更好的方法是將所有相關(guān)信息收集在一個(gè)Person下,并將其用于每個(gè)人。 現(xiàn)在,代碼看起來也更加簡(jiǎn)潔,易讀且高效。
用一個(gè)單獨(dú)的名字Person收集的所有相關(guān)信息就是一個(gè)結(jié)構(gòu)體。
struct關(guān)鍵字定義一個(gè)結(jié)構(gòu)類型,后跟一個(gè)標(biāo)識(shí)符(結(jié)構(gòu)的名稱)。
然后,在花括號(hào)內(nèi),可以聲明該結(jié)構(gòu)的一個(gè)或多個(gè)成員(在花括號(hào)內(nèi)聲明變量)。例如:
struct Person { char name[50]; int age; float salary; };
這里定義結(jié)構(gòu)體Person,其具有三個(gè)成員:name,age和salary。
創(chuàng)建結(jié)構(gòu)時(shí),不會(huì)分配內(nèi)存。
結(jié)構(gòu)定義只是創(chuàng)建變量的藍(lán)圖。您可以將其作為一中數(shù)據(jù)類型。當(dāng)您如下定義整數(shù)時(shí):
int foo;
int指定變量foo只能接納整數(shù)元素。 同樣,結(jié)構(gòu)定義僅指定結(jié)構(gòu)變量在定義時(shí)所擁有的屬性。
注意: 切記要以分號(hào)(;)結(jié)束結(jié)構(gòu)體的聲明
一旦你像上面那樣聲明了一個(gè)結(jié)構(gòu)體 Person。你可以定義一個(gè)結(jié)構(gòu)變量如下:
Person bill;
這里定義了一個(gè)結(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個(gè)字節(jié)的內(nèi)存。
使用點(diǎn)(.)運(yùn)算符可以訪問結(jié)構(gòu)變量的成員。
假設(shè)您要訪問結(jié)構(gòu)變量bill的成員屬性age并給其分配值50。您可以使用以下代碼執(zhí)行此任務(wù):
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
在這里,聲明一個(gè)具有三個(gè)成員name,age和salary的結(jié)構(gòu)體。
在main() 函數(shù)內(nèi)部,p1定義了一個(gè)結(jié)構(gòu)變量。然后,要求用戶輸入信息,并顯示用戶輸入的數(shù)據(jù)。
您還可以查看這些與結(jié)構(gòu)有關(guān)的教程: