亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

《C++ primer plus》讀書筆記(二)

 更新時間:2014年10月16日 09:23:17   作者:錢書康  
本讀書筆記是讀了《C++ primer plus(第六版)》第五至八章的學習筆記。是C++讀書筆記系列的第二篇。復習C++基礎知識的可以瞄瞄。

第五章

1、for循環(huán)——for(initialization; test-expression; update-expression) body  // test-expression 會被轉換為bool,0為false,非零為true

2、表達式——表達式是值或值與運算符的組合。賦值表達式的值為其左側成員的值,而賦值運算符是從右到左結合的。

3、a++和++a——

 ?。?)對于內置類型,兩種執(zhí)行效率相同。

 ?。?)若重載運算符,對于類而言,前綴將值加1,返回結果;后綴會復制一個副本,加1后返回副本。所以前綴比后綴效率高。

4、逗號運算符——

 ?。?)for循環(huán)中,將多個表達式合并為一個:  i++, j++;

 ?。?)聲明:  int i , j;

 ?。?)逗號表達式先計算第一個表達式,再計算第二個表達式。逗號表達式的值是第二部分的值。

 ?。?)逗號表達式是優(yōu)先級最低的表達式。

5、strcmp()——比較兩個字符串。接受2個字符串地址A、B作為參數。AB相同返回0,A的字母順序在B之前,者返回負數,否則返回正數。

 ?。ㄓ靡柪ㄆ鸬淖址A渴瞧涞刂?。)

6、clock()——返回程序開始執(zhí)行后所用的系統(tǒng)時間。這個值除以CLOCKS_PER_SEC可以得到秒數。

7、類型別名——#define AA char  // 用AA作為char的別名,所有的AA將被char替代

  或  typedef AA char

8、cin——cin.get()會忽略空格和換行符。發(fā)送給cin的輸入會被緩沖。按下回車鍵,輸入的內容才會被發(fā)送給程序。

   cin.get(ch)會得到每個字符。其參數聲明為引用類型,所以函數可以修改其參數的值。

9、EOF——很多PC編程環(huán)境都將Ctrl+Z視為模擬的EOF,檢測到EOF之后,cin將兩位(eofbit和failbit)都設置為1。eof()和fail()用來查看是否被設置。

  所以循環(huán)等待輸入的條件可以這樣設置:while( cin.fail() == false ) {} 或 whle( !cin.fail() ){} 或 while(cin){} 或 while( cin.get(ch) ){}

 ?。ㄍǔ?,EOF被定義為-1)

第六章

10、運算符——!運算符的優(yōu)先級高于所有的關系運算符和算術運算符。

    邏輯AND運算符的優(yōu)先級高于邏輯OR運算符。

    C++確保程序從左到右計算邏輯表達式。

11、cctype——字符函數庫。如isalpha(ch)判斷字符是不是字母,是字母就返回非零,否則返回0。

12、文本IO——使用cin進行輸入時,程序將輸入看作一系列的字節(jié),其中每個字節(jié)被解釋為字符編碼。

第七章

13、定義函數——

  (1)、無返回值:  void functionName(parameterList) {}

 ?。?)、有返回值:  typeName functionName(parameterList) {}

 ?。ㄗ⒁?!返回值的類型不能是數組,可以是其他任何類型)

14、函數原型——

 ?。?)、函數原型能極大降低程序出錯的幾率、提高效率。

 ?。?)、函數原型不要求提供變量名,有類型列表就足夠了。

 ?。?)、括號為空與括號中使用void是等效的,不指定參數列表應使用省略號——void haha(...);

 15、函數和二維數組——指針的類型是指把指針聲明語句中的指針名字去掉所剩下的部分

  對于:  int data[3][4] = {{1,2,3,4},{5,6,7,8},{4,3,2,1}};  int total = sum(data,3);  sum的原型是什么?

 ?。?)、原型是:  int sum ( int (*a) [4] , int size);

  所以 int(*)[4]即,將這個指針指向int[4]。所以data的類型指向由4個int組成的數組的指針

  所以 int *a[4] 的類型是int * [4],這個指針指向int,總共有4個,即它是4個指向int指針組成的數組。

  (2)、函數定義:  int sum (int a[][4] ,int size);

  a[ r ][ c ] = *( *( a + r ) + c); 

16、遞歸——每個遞歸調用都創(chuàng)建自己的一套變量。

 ?。ㄗ⒁?!C++不允許main()調用自己。)

17、函數指針——

 ?。?)、函數地址:  函數的地址是存儲其機器語言代碼的內存的開始地址。如果think()是一個函數,那么think就是它的地址。

  (2)、聲明指針函數:  函數:double pam(int);  指針函數為: double (*pf)(int) = pam;  // pf是一個指向函數的指針。

第八章

18、編譯過程——編譯過程的最終產品是可執(zhí)行程序(由一組機器語言指令組成)。

  運行程序時,操作系統(tǒng)將這些指令載入到計算機內存中,因此每條指令都有特定的內存地址。計算機隨后逐步執(zhí)行這些指令。

19、函數調用——執(zhí)行到函數調用指令時,程序將在函數調用后,立即存儲該指令的內存地址,并將函數參數復制到堆棧,跳到標記函數起點的內存單元,

  執(zhí)行函數代碼(也許還需將返回值放入寄存器),然后跳回到地址被保存的指令處。

20、內聯函數——編譯器使用相應的函數代碼代替函數調用。

  函數聲明前加上關鍵字inline,函數定義前加上關鍵字inline。通常將省略原型,原型處直接定義。

21、引用變量——主要用途是作函數的參數,函數將使用原始數據,而不是其副本。

 ?。?)、創(chuàng)建:  int rats ;  int & a = rats;

 ?。?)、引用必須在聲明時初始化,不能先聲明再初始化。也不能通過賦值來設置引用。

  (3)、引用一旦與某個變量關聯起來,就一直效忠。

 ?。?)、若引用參數是const,若實參類型正確卻不是左值 或 類型不正確卻可以轉換成正確類型 時,將創(chuàng)建臨時變量。

 ?。?)、返回引用時,應避免返回函數終止時不再存在的內存單元引用。

22、左值——

 ?。?)、可被引用的數據對象。如變量、數組元素、結構成員、引用和解除引用的指針等。

  (2)、非左值,包括字面常量和包含多項的表達式。

 ?。?)、常規(guī)變量屬于可修改的左值,const變量屬于不可修改的左值。

23、右值引用——可指向右值的引用,使用&&聲明。如:  double & rref = std::sqrt ( 26.00 ) ;


24、默認參數——通過函數原型設置函數參數默認值。

  (1)、必須從右到左添加默認值。

 ?。?)、實參按照從左到右的順序依次被賦值給形參,而不能跳過任何參數。

25、函數重載——參數列表(特征標)不同,而函數名相同的函數。

  (1)、類型引用和類型本身被視為同一個特征標。

 ?。?)、不能把const變量賦值給非const形參

26、名稱修飾——根據函數原型中指定的形參類型對每個函數名進行加密,用來跟蹤每一個重載函數。

27、函數模板——相當于Java中的泛型

 ?。?)、聲明:  template <typename T> void Swap(T &a, T &b);  // typeName 可用 class 替換

 ?。?)、函數模板不能縮短可執(zhí)行程序,最終的代碼不包含任何模板,只包含了為程序生成的實際函數。

 ?。?)、一般將模板放在頭文件中。

28、顯式具體化——具體化的函數定義,匹配時,使用它而不是模板。

 ?。?)、非模板函數:  void swap( job &, job &);

 ?。?)、模板函數:  template <typeName T> void swap( T & ,T &);

 ?。?)、顯式具體化:  template<> void swap<job>( job &, job &);  // swap<job>中job是可選的

 ?。?)、編譯器在選擇原型時:  非模板函數  >  顯式具體化  >  模板函數

 ?。?)、顯式實例化:  template void swap<int> ( int, int);  // template后無<>

 ?。?)、隱式實例化:  對于模板函數,編譯器會通過對這個模板含數的引用生成一個含數的實例,這通常叫隱式實例化

29、decltype——decltype( expression ) var;  // 讓var的類型與expression一樣。

  (注意!若expression是一個函數調用,var的類型與其返回值相同。若expression是一個左值,var為指向其類型的引用)

30、后置返回類型——給函數指定返回類型。

  如:template<class T1, class T2>  auto gt( T1 x, T2 y) -> decltype( x + y ) {  ...  return x + y ;}

相關文章

  • C++中內存池和內存分配區(qū)Arena概念詳解

    C++中內存池和內存分配區(qū)Arena概念詳解

    在 C++ 中,內存分配區(qū)(Arena)通常指的是預先分配的一大塊連續(xù)內存空間,這種方法的主要目的是提高內存分配和釋放的效率,下面就跟隨小編一起了解一下C++中內存池和內存分配區(qū)Arena相關概念吧
    2023-12-12
  • C++語言設計實現五子棋

    C++語言設計實現五子棋

    這篇文章主要為大家詳細介紹了C++語言設計實現五子棋,包括數據結構和對象設計及主函數調用實現,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • C++11中std::move、std::forward、左右值引用、移動構造函數的測試問題

    C++11中std::move、std::forward、左右值引用、移動構造函數的測試問題

    這篇文章主要介紹了C++11中std::move、std::forward、左右值引用、移動構造函數的測試,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • C++ 中使用lambda代替 unique_ptr 的Deleter的方法

    C++ 中使用lambda代替 unique_ptr 的Deleter的方法

    這篇文章主要介紹了C++ 中使用lambda代替 unique_ptr 的Deleter的方法,需要的朋友可以參考下
    2017-04-04
  • C++中fstream,ifstream及ofstream用法淺析

    C++中fstream,ifstream及ofstream用法淺析

    這篇文章主要介紹了C++中fstream,ifstream及ofstream用法,適合C++初學者學習文件流的操作,需要的朋友可以參考下
    2014-08-08
  • 詳解C語言函數返回值解析

    詳解C語言函數返回值解析

    這篇文章主要介紹了詳解C語言函數返回值解析的相關資料,需要的朋友可以參考下
    2017-06-06
  • C++17新特性個人總結

    C++17新特性個人總結

    這篇文章主要介紹了C++17新特性個人總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 解析C/C++?Capstone?引擎源碼編譯問題

    解析C/C++?Capstone?引擎源碼編譯問題

    Capstone的編譯非常簡單只需要一步即可輕松得到對應的Lib庫文件,如下將介紹該引擎如何被編譯,以及簡單的測試編譯,這篇文章主要介紹了C/C++?Capstone?引擎源碼編譯,需要的朋友可以參考下
    2022-09-09
  • 關于memcpy和memmove的一點重要說明

    關于memcpy和memmove的一點重要說明

    下面小編就為大家?guī)硪黄P于memcpy和memmove的一點重要說明。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 在Visual Studio中用C++語言創(chuàng)建DLL動態(tài)鏈接庫圖文教程

    在Visual Studio中用C++語言創(chuàng)建DLL動態(tài)鏈接庫圖文教程

    這篇文章主要介紹了在Visual Studio中用C++語言創(chuàng)建DLL動態(tài)鏈接庫圖文教程,本文詳細講解了DLL庫的創(chuàng)建過程,并給出了代碼示例,需要的朋友可以參考下
    2014-09-09

最新評論