C++Primer學習筆記第二章

第2章
C++學習筆記
(這裏我只寫出我自己的一些自己還需補充的平時容易忘的點)
變量和基本類型:
常用:
bool 布爾類型 未定義
char 字符 8位
short 短整型 16位
int 整型 16位
long 長整型 32位
long long 長整型 64位
float 單精度浮點型 6位有效數字
double 雙精度浮點型 10位有效數字
long double 擴展精度浮點型 10位有效數字
除了bool和Unicode字符(上面未提及)外,其他的還可以分爲帶符號(signed)和不帶符號(unsigned)兩種
類型轉化
轉bool,0爲false,非0爲true;高精度轉低進度,可能會出現精度損失,給無符號類型賦予一個大於他最大範圍的數,得到的是初始值對無符號類型表示數值總數取模後的餘數。
字面值常量,變量,標示符,名字作用域,引用,指針,const限定符直接過,下面是一個小點
指針存對象的地址,用時注意空指針,空指針不同於void*指針
空指針是不指向任何對象,但是已經有類型了,如他是一個整型指針;
而void*指針是一種特殊類型的指針,可以存放任意對象的地址(我們不能直接操作void*指針所指向的對象,因爲我們不知道指向的是什麼類型的,一般void*指針作用比較有限,用於指針比較,函數輸入輸出,或者賦給例外一個void*指針)
const:注意const修飾的是哪部分const指針,指向const對象的指針(分清底層定層const),還有const引用。
頂層const是指針本身是個常量,不可改變他指向的對象,但在操作他所指向的對象時,這個對象的值是可以改變的,即他只能對應一個東西,而這個東西的內容可以改變,但他不能放棄這個東西而去指向另外一個東西: int *const pl;
底層const是這個指針指向一個常量,他可以改變他要指向的東西,但他指向的東西本身是不可改變的: const int *p2;
處理類型
類型別名關鍵字:typedef:
Eg: typedef int int1;
int1 v1;//等價於int v1;
別名聲明關鍵字:using
Eg: using int1 = int;
auto類型說明符:(C++11新標準)
編程是我們常要把表達式的值賦給變量,但這樣我們要清楚表達式的類型,auto讓編譯器替我們去分析表達式所屬類型,通過初始值來推算變量的類型,auto定義的變量一定要有初始值
然而在複合類型還有常量的時候,auto推斷出來的並不完全一樣,編譯器會適當改變結果類型使其更符合初始化規則。其次auto一般會忽略掉頂層const,保留底層const,如果一定要一個頂層const,則必須手動加const聲明。
比如
這裏寫圖片描述
decltype類型指示符
decltype關鍵字的作用是獲取並返回操作數的值,在此過程中,編譯器分析表達式並得到他的類型,但不計算表達式的值(因爲無需獲取),decltype獲取的類型跟原來的類型基本完全一樣,引用類型還是引用類型,不忽略頂層const;
例如:
這裏寫圖片描述
decltype(解地址)獲取的是一個引用,如果給表達式套上一個括號,則獲取的也是引用(雙括號一定是引用)
例如:
這裏寫圖片描述
自定義數據結構:
struct結構體,class類(定義完要加分號)
編寫自己的頭文件:
預處理器
頭文件保護符:

ifdef #ifndef #define #endef

預處理變量無視作用域的規則

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章