c 學習筆記十二 結構體 聯合體 列舉類

2021-10-14 16:42:06 字數 1910 閱讀 8971

結構體

結構體其實是一種特殊的類。是c++繼承c語言得來的,但是與類不同有以 下兩點

1.關鍵字為 struct,類的關鍵字為class.

2.其預設屬性為public,類的預設屬性為private

其他與c++中類的使用方法相同下面舉乙個例子說明結構體的使用

#include

using

namespace std;

struct test

intgetx()

intgety()

};intmain()

聯合體

聯合體利用關鍵字 union宣告,最主要的特點是儲存空間的共用,其中成員也包括private public 以及protected屬性,但是由於共用乙個儲存空間的特點所以。任何資料不可能同時有效,具體儲存如下圖所示

以上為聯合體記憶體示意圖。

可以看到共用乙個記憶體,所以當有以下**

union mark;i=

1;j=2

當j的值等於2時,i的值會被覆蓋,因為他們之間共用乙個記憶體。

列舉類

同列舉型別相似具體列舉型別值,但是與列舉型別不同的是,列舉類有強作用域,所以在列舉值的同時需要加上限定域,所有不會重名,意義也會更加清晰。

舉例如下

enum

mode;

並且列舉類可以設定底層值,具體格式如下

enum calss 列舉型別名:底層型別;其中預設為int,也可以指定其他型別。

下面將三個類融合寫乙個例子,建立乙個考試資訊的類,裡面有三種統計的方式分別是 int char bool,根據三種型別輸出不同形式的分數,具體**如下

#include

# include

using

namespace std;

class

examinfo

mode;

//無名聯合體,就是沒有名字的類,可以直接用

union

;public

://不同型別的建構函式,根據不同的模式選擇不同的初始化物件

examinfo

(string name,

char grade1)

:name

(name)

,mode

(grade)

,grade

(grade1)

examinfo

(string name,

int precent)

:name

(name)

,mode

(percentage)

,percent

(precent)

examinfo

(string name,

bool pass)

:name

(name)

,mode

(pass)

,pass

(pass)

void

show()

;};void examinfo::

show()

cout << endl;

}int

main()

執行**結果如下

以上就是結構體 聯合體 以及列舉類的基本概念

結構體 聯合體 列舉

1 結構體struct 結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們要傳送的不是簡單的位元組流 char型陣列 二是多種資料組合起來的乙個整體,其表現形式是乙個結構體。使用struct的注意事項 1 下面看乙個題目 結果 6 12 這裡涉及到結構體的記憶體對齊方式。1 關...

結構體 聯合體 列舉

結構體 1.宣告乙個結構體型別的一般形式為 struct 結構體名 成員表列 如 struct student 表示可選項 注 宣告不是定義,故不可對成員列表中的成員進行初始化。定義別名 方法一 如 struct 結構體名 typedef struct 結構體名 別名 方法二 如 typedef s...

C C 學習筆記4 結構體聯合體列舉

include include include 圖形繪製 的架構 很多種型別的圖元,我要繪製它們。圖元的型別 enum shape type struct point struct shape struct rect struct circle u void init circle shape st...