自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

EasyC++,結(jié)構(gòu)體初探

開發(fā) 后端
數(shù)組可以存儲多個同類型的變量,但如果我們想要存儲多個不同類型的變量呢?比如說我們想要存儲一個學(xué)生的姓名、年齡、性別、考試分?jǐn)?shù),這些變量可能string, int, float都有,顯然就不能使用數(shù)組了。

  [[431023]]

大家好,我是梁唐。

這是EasyC++系列的第13篇,咱們來聊聊C++當(dāng)中的結(jié)構(gòu)體。

想要追求更好閱讀體驗的同學(xué),可以點擊文末的「閱讀原文」,訪問github倉庫。

結(jié)構(gòu)體

定義結(jié)構(gòu)體

數(shù)組可以存儲多個同類型的變量,但如果我們想要存儲多個不同類型的變量呢?比如說我們想要存儲一個學(xué)生的姓名、年齡、性別、考試分?jǐn)?shù),這些變量可能string, int, float都有,顯然就不能使用數(shù)組了。

為了滿足這樣的存儲要求,我們可以使用C++當(dāng)中的結(jié)構(gòu)體(struct)。在同一個結(jié)構(gòu)體當(dāng)中,我們可以定義許多種不同類型的變量,就可以滿足我們各種各樣的需求了。如果我們想要存儲多個這樣的內(nèi)容,還可以將它定義成數(shù)組。

結(jié)構(gòu)體和類已經(jīng)很接近了,所以理解結(jié)構(gòu)體對于理解面向?qū)ο蠓浅S袔椭km然算法競賽當(dāng)中一般用不到面向?qū)ο?,但是對于開發(fā)者來說,面向?qū)ο罂梢哉f是必學(xué)的內(nèi)容。C++ primer中說,結(jié)構(gòu)體是C++ OOP(面向?qū)ο缶幊?的基石。

我們使用關(guān)鍵字struct來定義一個結(jié)構(gòu)體:

  1. struct student { 
  2.  string name
  3.     bool gender; 
  4.     double scores; 
  5. }; 

表示定義了一個結(jié)構(gòu)體,它的類型名是student,花括號當(dāng)中括起來的內(nèi)容是結(jié)構(gòu)體的成員變量。注意student是類型名,也就是說我們可以用它來定義出student類型的變量:

  1. student xiaoming; 
  2. student john; 

我們可以用.來訪問結(jié)構(gòu)體內(nèi)部的元素:

  1. cout << john.name << endl; 

struct的定義有兩種寫法,既可以寫在main函數(shù)外部,也可以寫在main函數(shù)內(nèi)部。如:

  1. // 寫法1 
  2. struct student { 
  3.  string name
  4.     bool gender; 
  5.     double scores; 
  6. }; 
  7.  
  8. int main() { 
  9.     // do something 
  10.     return 0; 
  11.  
  12. // 寫法2 
  13. int main() { 
  14.     struct student { 
  15.         string name
  16.         bool gender; 
  17.         double scores; 
  18.     }; 
  19.     // do something 
  20.     return 0; 

邏輯上兩種方式完全一樣,只是第一種方式student類型可以被任何函數(shù)使用,但如果寫在main函數(shù)內(nèi)部,就只能在main函數(shù)內(nèi)部使用。

結(jié)構(gòu)體變量也可以定義在函數(shù)內(nèi)部定義,定義在外部的變量被所有函數(shù)所共享,也就是全局變量。C++ primer當(dāng)中提倡盡量使用外部結(jié)構(gòu)體。

初始化方式

我們可以和數(shù)組一樣,在花括號內(nèi)使用逗號進行分隔,如:

  1. student xiaoming = {"xiaoming", 1, 3.5}; 

編譯器會按照順序,分別將"xiaoming"賦值給name,1賦值給gender,3.5賦值給score。我們也可以使用C++11的列表初始化方式省略掉中間的等于號:

  1. student xiaoming {"xiaoming", 1, 3.5}; 

結(jié)構(gòu)體數(shù)組

定義了結(jié)構(gòu)體之后,我們還可以像是基礎(chǔ)變量類型一樣定義結(jié)構(gòu)體數(shù)組。

  1. struct student { 
  2.  string name
  3.     bool gender; 
  4.     double scores; 
  5. }; 
  6.  
  7. student sts[10]; 

對于結(jié)構(gòu)體數(shù)組來說,我們也可以使用列表初始化方式來初始化,由于結(jié)構(gòu)體本身的初始化就用到花括號,所以數(shù)組的初始化會使用到花括號的嵌套,像是這樣:

  1. student sts[2] = { 
  2.     {"xiaoming", 1, 3.6}, 
  3.     {"john", 1, 5.2} 
  4. }; 

 

責(zé)任編輯:武曉燕 來源: Coder梁
相關(guān)推薦

2021-10-27 16:27:20

C++指針操控

2021-10-29 09:44:50

C++指針變量

2021-12-29 20:31:40

C++多態(tài)指針

2021-12-12 18:13:54

C++This指針

2021-12-09 10:56:50

函數(shù)C++原型

2021-11-26 00:03:20

C++編譯常量

2021-11-27 11:50:09

C++靜態(tài)持續(xù)

2021-11-09 10:38:16

C++Const指針

2021-12-11 19:02:03

函數(shù)C++對象

2021-12-08 10:43:09

C++實現(xiàn)

2021-12-10 10:45:36

C++函數(shù)Stock

2021-12-30 14:58:58

C++函數(shù)動態(tài)

2021-12-15 10:25:57

C++運算符重載

2021-12-05 18:20:42

C++空間特性

2022-01-04 16:35:42

C++Protected關(guān)鍵字

2021-10-26 15:36:17

C++枚舉值類型

2021-11-10 10:48:36

C++函數(shù)指針

2021-11-30 11:04:36

C++函數(shù)語言

2021-12-16 10:40:11

C++運算符重載

2021-12-26 00:08:35

C++初始化列表
點贊
收藏

51CTO技術(shù)棧公眾號