国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++結構體(結構類型)是什么

2020-05-23 14:27:01
字體:
來源:轉載
供稿:網友
學校要統計學生情況,于是Tomato同學給出了一張自己的信息表:
C++結構體(結構類型)是什么

從上表來看,我們需要兩個字符串分別用來存儲姓名,需要兩個整型變量分別來存儲學號和年齡,還需要一個浮點型變量來存儲平均成績。一個學生已經需要至少5個存儲空間,更何況一個學校有幾千個學生,那將需要幾萬個存儲空間。如果有這么多的變量,顯然是很難管理的。

我們把變量比作為箱子。在現實生活中,如果小箱子太多太雜亂了,我們會拿一個大收納箱來,把小箱子一個個有序地放到收納箱里面。這樣一來,在我們視線里的箱子就變少了,整理起來也會比較方便。那么,我們能否把這么多凌亂的變量整理到一個變量當中呢?

C++中有一種數據類型稱為結構(Structure)類型,它允許用戶自己定義一種數據類型,并且把描述該類型的各種數據類型一一整合到其中。
C++結構體(結構類型)是什么

如上表所示,每個學生的信息成為了一個整體。一個學生擁有學號、姓名、年齡、院系和平均成績這五項屬性,我們把這些屬性稱為這個結構類型的成員數據(Data Member)。每項屬性的數據類型也在旁邊做了說明。這樣一來,雜亂的數據和每個學生一一對應了起來,方便了我們管理。

定義一種結構類型的語法格式為:
struct 結構類型名
{
   數據類型 成員數據1;
   數據類型 成員數據2;
   ……
   數據類型 成員數據n;
};
和定義枚舉類型類似,定義結構類型的位置必須在首次使用該類型名之前,否則程序將無法正確識別該類型。要注意,定義完結構類型后的分號是必不可少的,否則將會引起錯誤。
如果我們要創建前面的學生類型,可以寫作:
struct student
{
   int idNumber;
   char name[15];
   int age;
   char department[20];
   float gpa;
};
這時候,就有了一個新的數據類型,稱為student。我們要用這種student類型來創建一個變量,并可以依次對它的成員數據進行初始化:
    student s1={428004, "Tomato",20, "ComputerScience",84.5};
這樣就有了一個student類型的變量s1。s1有五項屬性,它們應該怎么表達呢?如果用自然語言描述,我們會說s1的idNumber、s1的name等等。在C++中,我們用一個點“.”來表示“的”,這個“.”稱為成員操作符

下面我們就來看一段程序,了解結構類型的基本使用:(程序9.2)
#include "iostream.h"
struct student
{
   int idNumber;
   char name[15];
   int age;
   char department[20];
   float gpa;
};
int main()
{
   student s1,s2;//首次使用student類型名,定義必須在這之前。
   cout <<"輸入學號:";
   cin >>s1.idNumber;//成員數據可以被寫入
   cout <<"輸入姓名:";
   cin >>s1.name;
   cout <<"輸入年齡:";
   cin >>s1.age;
   cout <<"輸入院系:";
   cin >>s1.department;
   cout <<"輸入成績:";
   cin >>s1.gpa;
   cout <<"學生s1信息:" <<endl <<"學號:" <<s1.idNumber <<"姓名:" <<s1.name <<"年齡:" <<s1.age <<endl <<"院系:" <<s1.department <<"成績:" <<s1.gpa <<endl;//成員數據也能夠被讀出
   s2=s1;//把s1的給各個成員數據值分別復制到s2中
   cout <<"學生s2信息:" <<endl <<"學號:" <<s2.idNumber <<"姓名:" <<s2.name <<"年齡:" <<s2.age <<endl <<"院系:" <<s2.department <<"成績:" <<s2.gpa <<endl;
   return 0;
}
運行結果:
輸入學號:428004
輸入姓名:Tomato
輸入年齡:20
輸入院系:ComputerScience
輸入成績:84.5
學生s1信息:
學號:428004姓名:Tomato年齡:20
院系:ComputerScience成績:84.5
學生s2信息:
學號:428004姓名:Tomato年齡:20
院系:ComputerScience成績:84.5

我們看到,結構的成員數據是既可以被讀出,也可以被寫入的。而且,相同類型的結構變量還能夠用一個賦值操作符“=”把一個變量的內容賦值給另一個變量。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大埔县| 敦化市| 镇坪县| 巨鹿县| 饶河县| 札达县| 清水县| 蓬安县| 奉新县| 个旧市| 衡东县| 福贡县| 洛扎县| 当阳市| 阜新市| 舞阳县| 宣化县| 大足县| 江津市| 老河口市| 罗源县| 台东县| 洛南县| 梅河口市| 沙雅县| 大足县| 湟源县| 绥德县| 张家界市| 祥云县| 彭水| 南华县| 金寨县| 惠水县| 吉木乃县| 扶余县| 襄垣县| 赤水市| 万源市| 邢台县| 齐河县|