聯合 列舉 和型別別名

2022-03-22 06:17:46 字數 1709 閱讀 8858

在c++裡還有許多其他型別使我們暫時還沒有提到的。除了物件外,c++中最重要的資料型別已經一一帶來和大家見過面了。(物件將在下一節開始介紹)

到目前為止,我們已經見過了整數、實數、字元、字串、陣列、指標和結構。今後我們還會討論一種優於陣列的向量(vector)型別。本節,我們介紹幾個非主流的型別,第乙個是:聯合(union)。

聯合與結構有很多相似之處,聯合也可以容納多種不同型別的值,但是它每次只能儲存這些值中的某乙個。

例如:我們要定義乙個變數來存放某種密碼,我們可以選擇是你女朋友的生日、身份證最後4位數字或者你養的寵物的名字等等。

聯合型別將是乙個不錯的選擇》

union mima 

定義了這個聯合型別之後,就可以像下面這樣建立乙個該型別的變數了:

mima mima_1;

再接下來,我們可以像對結構成員進行賦值那樣對聯合裡的成員進行賦值,使用同樣的語法:

mima_1.birthday=19881301;

上邊這條語句是將值19881301存入mima_1聯合的birthday裡邊。如果我們再執行下邊語句:

mima_1.pet="chaozai";

這個聯合將把「chaozai"存入mima_1聯合的pet 成員,並丟棄birthday成員裡的值。

//

舉例#include union mima

;int

main()

19881301

chaozai

4464642

請按任意鍵繼續. . .

view code

列舉(enum)型別用來建立乙個可取值列表:

enum weekdays;

weekdays today;

today =monday1;

std::cout

<< today << "

\n"; //

0today =tuesday;

std::cout

<< today << "

\n"; //

1}

view code

注意,我們這裡不需要使用引號,因為列舉值不是字串。。。

編譯器會按照各個列舉值在定義時出現的先後順序把它們與0~n-1的整數(n是列舉值的總個數)分別關聯起來。

使用列舉型別好處有兩個:

(1)它們對變數的可取值加以限制;

(2)它們可以用做 switch條件語句的case標器。(因為字串是不能作為標號用的!小技巧哦~)

#include int

main()

;

weekdays today;

//today = monday1;

//出錯:它們對變數的可取值加以限制

//std::cout << today << "\n";

today =tuesday;

std::cout

<< today << "

\n"; //

1switch

(today)

}

view code

最後我們來介紹typedef保留字,使用它可以為乙個型別定義建立乙個別名。

typedef int*intpointer;

在此之後,我們就可以像下面這樣來定義整型括針了:

intpointer mypointer;

Go No nil 型別別名

為型別起個別名,方便 編寫過程中使用。type alias ttype 關鍵字 alias 型別別名 t 型別 例如資料型別中提到的unicode字元型rune和ascii字元型byte就是型別別名 type rune int32 type byte uint8在 go 中有一些基本的資料型別,如s...

指標 常量和型別別名

今天看了c primer的2.5.1的一點小理解。如果某個型別的別名指代的是復合型別或是常量,那麼它用到宣告語句裡面就會產生意想不到的後果,例如下面的宣告語句用到了型別pstring,它實際上是型別char 的別名 typedef char pstring const pstring cstr 0 ...

定義型別別名 typedef,using

說到型別別名,無非是給型別名 如int,char,float,double,bool 取乙個比較有特殊含義的名字而已 最常用的關鍵莫過於typedef吧 typedef最常見的用法是與結構體struct連用,這是c語言的語法,c 已經不這樣用了 或者很少這樣用 在c語言中宣告結構體常用以下格式 1 ...