C 結構(structure)詳解

2021-07-09 23:51:22 字數 1542 閱讀 7075

什麼是結構?哪些情況下需要使用結構?結構的語法要點?

在c++中,

結構(structure)與類幾乎是完全一樣的型別,(

結構是一種資料型別

)差別僅僅在於預設情況下結構的成員為公有的。

在c語言階段,結構就已存在,但它只有公有的資料成員。正因為如此,c++程式設計師仍然使用結構,但是只為結構安排公有的資料成員。當只使用資料成員,而且這些資料成員的型別往往互不相同時,總是採用結構型別,而不採用類。因為這樣程式更易讀易懂。

定義結構型別的格式如下:

struct //結構型別名

;//最後的分號不可少

例如,下面給出的庫存貨物(inventory、員工(employee)兩個結構型別:

struct inventory

;struct employee

;

◆ 1、

結構是一種派生資料型別,定義結構時並不分配儲存空間,只有定義了結構型別的變數,編譯系統才為結構變數分配儲存空間

。定義變數方法如下:設有兩個雇員———man1和man2,如此定義: employee man1 , man2 ;

◆ 2、

對結構變數可以在定義時初始化

。方法是:

在花括號中順序填入結構中的(資料)成員的初始值:

employee emp1=,

emp2=;

◆ 3、 

結構變數的訪問與類的物件一樣,可使用成員訪問操作符之一的「點操作符」

,對成員乙個個進行:

變數名 . 成員名

◆ 4、

與同類的物件之間可以拷貝一樣,同結構型別的變數之間也可以作為整體相互賦值(拷貝)(因為結構的組成與大小是固定的,這一點與陣列不同)

。在c++中,賦值運算子「=」理解為

隱式拷貝賦值操作符

(copy assignment operator)。如按前面的定義,emp1=emp2是合法的,這時emp2中的內容成為emp1的拷貝。但同型別變數不能比較大小。

◆ 5、

結構變數也可以作為函式的引數和返回值,結構作為引數也是按值(複製)進行傳遞的,當然也可以按引用傳遞。

在程式檔案中強烈推薦將結構型別的定義放在所有函式的外面,這樣程式檔案中的各個函式可以按需要在各個函式中宣告區域性的結構變數。因為,在各函式中定義結構型別,即使兩個函式中定義的完全一樣,系統也完全認為是兩種結構型別。

◆ 6、

結構可以巢狀

,如上面所定義的員工(employee)結構型別可改為如下定義:

struct mail

;struct employee

;

結構成員必須是已定義過的結構,結構成員決不能是結構自身(這會引起無窮遞迴)。

訪問結構變數的結構成員的方法:

用連續點號來訪問結構變數的結構成員

。例如有程式段:

employee emp1=;

cout《輸出為:

83792666。

c 中結構體structure初始化

1.c structure基本事實 2.初始化問題 3.總結 1.c structure基本事實 c structure為值型別,和class是相類似,但是c 中的class是引用型別。2.初始化問題 下面是兩段 看上去是相似的,但是其中一段 是不能夠編譯的 public struct struct...

c 中結構體structure初始化

1.c structure基本事實 2.初始化問題 3.總結 1.c structure基本事實 c structure為值型別,和class是相類似,但是c 中的class是引用型別。2.初始化問題 下面是兩段 看上去是相似的,但是其中一段 是不能夠編譯的 public struct struct...

類(class)和結構(structure)的認識

本文複製了 msdn library 的原話,覺得它說得有道理,狠經典 原話 類和結構是 net framework 中的常規型別系統的兩種基本構造。兩者在本質上都屬於資料結構,封裝著一組整體作為乙個邏輯單位的資料和行為。資料和行為是該類或結構的 成員 它們包含各自的方法 屬性和事件等 本主題後面列...