C 學習筆記 型別宣告

2021-08-07 02:08:23 字數 1514 閱讀 1268

typedef關鍵字是繼承自c語言的特性,利用它我們可以為乙個型別起別名,一般用於將複雜型別簡化。舉個簡單的例子,將int型別定義為integer型別,之後就可以在**中使用integer作為型別使用。

//typedef關鍵字

typedef

int integer;

integer i = 5;

c++還新增了另一種宣告型別別名的方法,這就是別名宣告。

//別名宣告

using charater = char;

charater c = 'c';

使用auto關鍵字可以簡話型別宣告。當使用auto關鍵字是,變數的型別由編譯器自動推斷。

//auto關鍵字

auto number = 100;//number是int

auto pnumber = &number;//pnumber是int*

由於編譯器需要根據給定的初始值判斷變數的型別,所以auto型別的變數必須初始化。而且如果在一行宣告多個變數,那麼這些變數的型別必須相同。

auto ca = 'a', cb = 'b';
如果使用常量來初始化auto變數,那麼編譯器會忽略頂層const,保留底層const。所以在下面的例子中,auto變數和原變數的型別並不完全相同。

//忽略頂層const,保留底層const

const

int cn = 100;

const

int* pn = &cn;

auto cn2 = cn;//int

auto pn2 = pn;//const int*

有時候可能需要根據表示式的型別來決定要使用的型別,在這種情況下可以使用c++新增的decltype關鍵字。在下面的例子中,由於decltype中的表示式型別不同,所以宣告的變數的型別也不同。

//decltype關鍵字

decltype(5 + 5) n1;//int

decltype(5 + 5.0) n2;//double

decltype關鍵字可以接受的表示式型別很廣泛,甚至可以接受函式作為表示式,這時候會將函式的返回值型別作為要使用的型別,注意編譯器不會真的呼叫這個函式,僅僅是分析它的返回值而已。如果表示式是乙個引用,那麼獲得的型別就是嚴格的這個引用的型別,包括頂層和底層const在內。

特別要注意的一點是,如果表示式本身使用括號包括,那麼這其實是乙個引用型別,所以這時候的變數必須初始化。

//必須初始化

decltype((n2)) n3 = n2;//int&

C 學習筆記(二) 資料型別與宣告

1 資料型別,運算子以及控制語句構成了乙個語言最基本的部分,c 是靜態型別的,變數,函式,指標,陣列等使用之前都要確定其型別。2 型別可分為內建型別,自定義型別,陣列,指標,引用 對應著各自的型別說明符,也叫關鍵字,關鍵字是語言所定義。3 型別說明變數,變數,函式名,類名等都是識別符號,字母數字下劃...

C 型別宣告

typedef關鍵字是繼承自c語言的特性,利用它我們可以為乙個型別起別名,一般用於將複雜型別簡化。舉個簡單的例子,將int型別定義為integer型別,之後就可以在 中使用integer作為型別使用。typedef關鍵字 typedef int integer integer i 5 c 還新增了另...

C 型別和宣告

1.1bool 布林值 布林值,取true或者false,佔1個位元組。voidf int a,int b a b,則b1為true 否則為false bool is open file bool greater int a,int b bool b1 7 b1為false int i1 true ...