在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()
19881301view codechaozai
4464642
請按任意鍵繼續. . .
列舉(enum)型別用來建立乙個可取值列表:
enum weekdays;view codeweekdays today;
today =monday1;
std::cout
<< today << "
\n"; //
0today =tuesday;
std::cout
<< today << "
\n"; //
1}
注意,我們這裡不需要使用引號,因為列舉值不是字串。。。
編譯器會按照各個列舉值在定義時出現的先後順序把它們與0~n-1的整數(n是列舉值的總個數)分別關聯起來。
使用列舉型別好處有兩個:
(1)它們對變數的可取值加以限制;
(2)它們可以用做 switch條件語句的case標器。(因為字串是不能作為標號用的!小技巧哦~)
#include intview codemain()
;
weekdays today;
//today = monday1;
//出錯:它們對變數的可取值加以限制
//std::cout << today << "\n";
today =tuesday;
std::cout
<< today << "
\n"; //
1switch
(today)
}
最後我們來介紹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 ...