《C++ Primer》第二章要素太多?帶你快速回顧里面少見的生僻點

      網友投稿 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

      《C++ Primer》第二章要素太多?帶你快速回顧里面少見的生僻點

      但是不能其他引用或頂層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小時內刪除侵權內容。

      上一篇:每次保存文檔都彈出文檔未保護的提示,保護了又提示文檔已保護,怎么關閉提示?
      下一篇:怎么在Excel表格中的數據快速轉置成多列數據
      相關文章
      久久亚洲精品无码网站| 亚洲精品456在线播放| 亚洲人成影院77777| 亚洲伦理一区二区| 国产精品亚洲一区二区三区在线| 亚洲国产精品自产在线播放| 亚洲AV无码一区二区三区性色| 亚洲欧洲国产成人精品| 亚洲黄色在线播放| 久久亚洲精精品中文字幕| 久久久亚洲欧洲日产国码二区| 亚洲av鲁丝一区二区三区| 亚洲爆乳精品无码一区二区三区| 亚洲国产三级在线观看| 国产成人亚洲精品青草天美| 在线日韩日本国产亚洲| 亚洲无av在线中文字幕| 亚洲成色WWW久久网站| 久久99国产亚洲精品观看| 久久久久亚洲精品无码系列| 亚洲丁香色婷婷综合欲色啪| 夜夜亚洲天天久久| 亚洲午夜久久久精品电影院| 亚洲中文久久精品无码1 | 亚洲香蕉久久一区二区三区四区| 亚洲伊人久久大香线蕉| 亚洲国产精品免费观看| 亚洲国产成人无码AV在线| 亚洲aⅴ天堂av天堂无码麻豆| 国产精品亚洲天堂| 4338×亚洲全国最大色成网站| 国产av无码专区亚洲国产精品| 一本色道久久综合亚洲精品| 亚洲国产精品无码AAA片| 亚洲人成依人成综合网| 亚洲一区二区三区不卡在线播放| 亚洲无吗在线视频| 老子影院午夜伦不卡亚洲| 亚洲最大av无码网址| 亚洲AV无码国产精品色午友在线| 99久久精品国产亚洲|