WEB前端全棧成長計劃第一階段》第二章——初識HTML">《WEB前端全棧成長計劃第一階段》第二章——初識HTML
859
2025-04-04
本文不提供任何詳細筆記或者解釋。 僅僅是為那些看過《C++ Primer》大塊頭第二章節,感覺信息量太大,希望快速回顧一些生僻點確認是否有遺漏的同學進行學習,一些過于基礎的語法基本忽略。
PS: 話說第二章看起來是基礎章節,但是信息量相當巨大,很多人可能直接跳過了,卻沒注意到里面包含了大量的C++特殊用法。回顧自己N年前寫C++的經歷,發現下面內容的70%以上都沒用過= =,幾乎都是簡單寫法。。。
數據類型:
★long double 是96或128比特
★char與 signed char不一樣, 實際上char表示為有符號還是無符號取決于編譯器
因此不要用char去做運算,而應該做比較
★執行浮點數計算一般直接用double, 速度不比float慢,而且盡量不要用long double
★無符號整數和有符號整數相加, 有符號數變為無符號數(故不可以讓負數與無符號數相加)
★沒有空格,緊鄰的2個字符串實際上是一個字符串“abcd"“adf”
故s=“afda”"dfaf"是合法的
★3 是八進制的, \x123是十六進制的
34,則123是1個字符,4是一個字符
★可以通過添加后綴,來修改字面值(非變量 )的默認類型
例如
123默認為int
那么123U 則是無符號int
123UL 是無符號long
123ULL 是無符號long long
123.0默認為double
123.0F認為是float
123.0L認為是long double
對于字符
u’a’指16位
U’a’指3位
變量
★變量能存儲數據,具有某種類型的內存空間。
★初始化不等于賦值, 賦值涉及擦除當前值
★int a = 0, 也可以是 int a(0)
C++11中可以用花括號來初始化變量。 叫做列表初始化
int a{0} 或者 int a = {0}
這個初始化會將丟失精度的初始化報錯
例如 int a{1.2345},則會報錯,因為會丟失精度
★內置類型(int double)等變量的初始化,如果是函數體外(全局),則初始化為0
在函數體內的則是未定義的值。所以最好每次定義變量時,都要初始化。
類的對象必須有初始化操作
★聲明時如果初始化了,那么就變成了定義
extern int i, 則聲明了i,但是沒定義,i要在別的文件找
不可以extern int i =0, 因為這樣extern就沒有意義了
★C++是靜態類型語言:編譯階段檢查類型
★標識符規范:
變量名用小寫字母開頭
類名用大寫字母開頭
多個單詞間用下劃線區分,或者大寫字母區分,但是記住,變量名是這樣寫studentIndex, 而不是StudentIndex
開頭必須是字母或下劃線,不可以是數字
★全局作用域和塊作用域
★ 盡量不要讓全局名字和局部名字相同
引用:
★引用必須初始化,不能重新綁定其他對象。
不能引用值,并且引用沒有強制轉換
int &val = 1 錯
double dval=1.0
int &val = dval 錯
指針
★空指針生成方法:
int *p=nullptr或0或NULL
盡量使用nullptr
★空指針在if判斷中為false
非空指針在if判斷中為true
★void *可以指向任何對象
但要使用時,必須要進行類型轉換
★int* p1,p2, 則只有p1是指針,p2不是指針。
★&引用可以引用指針
但是指針不能指向引用&
常量
★const也必須初始化,不能改變
★若想在多個文件中共享全局const,則必須為每個const添加extern,即使是定義部分
★不能讓普通引用 去引用常變量
const int ci
int &ri =ci 是錯誤的
★常量引用: const int &r2 = 恒定的數字或者變量
常引用干嗎的?不能直接引用嗎?
普通引用 int &b = a;
常量引用 const int &b = a;
a改變時, b的值都會改變
但是常量引用中,不可以執行b = x的操作,即只能a改變b,但是b不能改變a
同理, 普通指針不能指向常量
但是常量指針可以指向常量
★頂層const表示指針本身是個常量,即int *const p
底層cosnt表示指針指向的是常量, 即const int *p
不能改變該名字的都叫頂層const
能改變該名字,但是不能改變該名字所指向的東西,叫底層const
當底層const作為賦值時,只能有底層const = 底層const
或者底層const = 頂層const
但是不能其他引用或頂層const = 底層const
★const int sz = f()并非常量表達式, 因為它直到函數運行才知道結果
constexpr int a 與const int a相同,但是a必須是一個常量表達式,即他的值是確定的,而不是運行時才知道
constexpr int a = size()一定錯誤嗎?
如果size()返回的也是constexpr int類型,說明大家的值都是一開始就可以初始化的,所以是對的
★constexpr能指的限制:
只能是算數類型、引用、指針,不能是其他亂七八糟的類
不能指向定義在函數體的變量(局部變量)
必須指向靜態或者全局變量
必須是0,nullptr或者“固定”地址中的變量
★const int *p和constexpr int *q不同
前者是指向常量的指針,即指向處不可改
而后者等同于 int *const p, 即只對指針有效
其他
★別名:
typedef 舊名字 新名字
using 新名字 = 舊名字
typedef char* pc
則pc 就是 char *的別名
但是注意:
const pc cstr = 0, cstr是指向char的常量指針, cstr不可改, *cstr可改
而 cosnt char *cstr=0, cstr是指向char *的指針,*cstr不可改,cstr可改
★auto 自動確定類型
auto 某常量, 則忽略頂層const, 不認為是const
auto &某常量, 則認為是底層const, 即 指向常量的指針
想要頂層const, 則用 const auto
★decltype(函數 或者表達式) sum = x, 即decltype通過返回類型來判斷類型,但是不會去計算答案
★decltype可以返回頂層const
decltype(p) 則返回p所指的類型, 如果*p=&i, 則類型就是int &
i是int, 則加了括號的decltype((i)) 是引用類型
C++ EI企業智能 可信智能計算服務 TICS 智能數據
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。