欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

《C++ primer plus》讀書(shū)筆記(一)

 更新時(shí)間:2014年10月16日 09:16:25   作者:錢(qián)書(shū)康  
本讀書(shū)筆記是C++ primer plus(第六版)前3章的學(xué)習(xí)筆記。非常的淺顯易懂,復(fù)習(xí)C++基礎(chǔ)知識(shí)的可以瞄瞄。

第一章

1、預(yù)處理器——#include<iostream>將iostream文件內(nèi)容添加到程序中。老式C頭文件保留了擴(kuò)展名.h,而C++頭文件沒(méi)有擴(kuò)展名。

(有些C頭文件被轉(zhuǎn)換為C++頭文件,去掉擴(kuò)展名,并在前面加c,如cmath)

2、名稱(chēng)空間——相當(dāng)于Java中的package,using編譯指令相當(dāng)于Java中的import。頭文件沒(méi)有.h前綴時(shí),類(lèi)、函數(shù)和變量是C++編譯器的標(biāo)準(zhǔn)組件,被放置在名稱(chēng)空間std中。

3、類(lèi)的本質(zhì)——類(lèi)是用戶(hù)定義的一種數(shù)據(jù)類(lèi)型。類(lèi)定義描述的是數(shù)據(jù)格式及其用法,而對(duì)象則是根據(jù)數(shù)據(jù)格式規(guī)范創(chuàng)建的實(shí)體。

4、main()——main()的返回值(退出值)是返回給操作系統(tǒng)。通常退出值為0意味著程序運(yùn)行成功。

第二章

5、OOP——面向?qū)ο缶幊痰谋举|(zhì)是設(shè)計(jì)并擴(kuò)展自己的數(shù)據(jù)類(lèi)型,讓類(lèi)型和數(shù)據(jù)匹配。

6、標(biāo)識(shí)符——以一個(gè)下劃線開(kāi)頭的名稱(chēng)被保留給實(shí)現(xiàn),作全局標(biāo)識(shí)符;以?xún)蓚€(gè)下劃線或下劃線加大寫(xiě)字母的名稱(chēng)被保留給實(shí)現(xiàn)(編譯器及其使用的資源)使用。

(C++對(duì)名稱(chēng)長(zhǎng)度沒(méi)有限制)

7、整型——short至少16位;int至少和short一樣;long至少32位,且至少和int一樣長(zhǎng);long long至少64位,且至少和long一樣長(zhǎng)。

8、字節(jié)——字節(jié)通常指8位的內(nèi)存單元,而C++中的字節(jié)依賴(lài)于實(shí)現(xiàn)。

9、運(yùn)算符——運(yùn)算符是內(nèi)置的語(yǔ)言元素。sizeof運(yùn)算符返回類(lèi)型或變量的長(zhǎng)度(字節(jié))。所以,不同系統(tǒng)中sizeof( int )的返回值可能不同。

10、頭文件climits——定義了各種表示類(lèi)型限制的符號(hào)常量。如:#define INT_MAX 32767。(被設(shè)計(jì)為C可用的頭文件,符號(hào)常量必須用#define編譯指令定義)

11、變量初始化——

  函數(shù)內(nèi)部定義的變量,應(yīng)該在定義的時(shí)候進(jìn)行初始化,否則它的值是不確定的,為被創(chuàng)建前相應(yīng)的內(nèi)存單元保存的值。

  (1)、int a = 1;  //  傳統(tǒng)的C初始化

  (2)、int b(2);  //  C++的新方式

  (3)、int c = {3} 或 int c{3}  //  C++的大括號(hào)初始化器用于任何類(lèi)型(大括號(hào)內(nèi)不包含任何東西時(shí),變量的初始化為0)

12、int——計(jì)算機(jī)處理起來(lái)效率最高的長(zhǎng)度。除非使用后綴或值太大,C++通常將整形常量存儲(chǔ)為int類(lèi)型。

13、wcha_t——是整形類(lèi)型,有足夠的空間表示系統(tǒng)使用的最大擴(kuò)展字符集。使用 iostream 中的 wcin 和 wcout 處理wcha_t流。

  可以通過(guò)前綴L來(lái)指示寬字符常量和寬字符串,如 wcha_t a = L'p';  wcout << L"tall" << endl;

  (C++11新增類(lèi)型 char16_t 和 char32_t ,都是無(wú)符號(hào)的,分別長(zhǎng)16位和32位,使用前綴 u 表示前者,前綴 U 表示后者)

14、bool——C++將0解釋為 false ,將非零解釋為 true 。

15、const——?jiǎng)?chuàng)建常量時(shí)最好馬上賦值,如cont int a = 5;常量通常將首字母大寫(xiě)。

16、浮點(diǎn)——float至少32位;double至少48位,且不少于float;long double 至少和double一樣多。這三種類(lèi)型的指數(shù)范圍至少是-37-37。

 ?。?)、cout.setf()可以控制輸出格式,迫使cout使用定點(diǎn)表示法。因?yàn)閏out通常會(huì)刪除浮點(diǎn)后面的0,如3.3300000顯示為3.33。

 ?。?)、浮點(diǎn)常量通常為double類(lèi)型,通常用后綴f或F指定float類(lèi)型,用后綴l或L指定long double類(lèi)型。

17、強(qiáng)制類(lèi)型轉(zhuǎn)換——

  如:(long) thorn  或  long(thorn)

  強(qiáng)制類(lèi)型轉(zhuǎn)換不會(huì)修改thorn本身,而是創(chuàng)建一個(gè)新的、指定類(lèi)型的值。

  也可以這樣:  static_cast<long> (thorn)  ,它比傳統(tǒng)的強(qiáng)制類(lèi)型轉(zhuǎn)換更為嚴(yán)格。

18、auto——自動(dòng)推斷類(lèi)型,關(guān)鍵字auto可以不指定變量的類(lèi)型,編譯器自動(dòng)把變量的類(lèi)型設(shè)置成與初始值相同,如 auto a = 100;

  不過(guò),auto一般是用于處理復(fù)雜類(lèi)型

第四章

19、數(shù)組——

 ?。?)、聲明數(shù)組的通用格式:  typeName arrayName[arraySize]  ,如 int a[5];

 ?。ň幾g器不會(huì)檢查使用的下標(biāo)是否有效。)

 ?。?)、如果沒(méi)有初始化函數(shù)中定義的數(shù)組,其元素的值為以前駐留在該內(nèi)存中的值。(與函數(shù)中的變量一樣)

  (3)、sizeof 作用與數(shù)組名時(shí),得到的是整個(gè)數(shù)組中的字節(jié)數(shù)。作用于元素時(shí),得到的是該元素的字節(jié)數(shù)。

 ?。?)、只有定義數(shù)組時(shí)才能初始化,之后就不行了。可以部分初始化,如:int a[5] = {1,2},部分初始化時(shí),編譯器把其他元素設(shè)置為0。

  可以這樣:  int b[] = {1,2,3,4,5};  讓編譯器計(jì)算元素個(gè)數(shù)。

 ?。?)、使用列表初始化數(shù)組時(shí),可以省略等號(hào)(=);大括號(hào)內(nèi)不包含任何內(nèi)容時(shí),默認(rèn)所有元素為0;列表初始化禁止縮窄轉(zhuǎn)換。

20、字符串——

  字符串是存儲(chǔ)在內(nèi)存的連續(xù)字節(jié)中的一系列字符。

  (1)、C-風(fēng)格的字符串以空字符結(jié)尾,其ASCII碼為0,如:  char dog[7] = {'a','b','c','d','e','f','\0'};  注意,數(shù)組長(zhǎng)度必須計(jì)算‘\0'  

  (2)、字符串常量,如:  char cat[] = "cat";

 ?。ㄗ⒁?!'S'代表字符常量,而"S"表示‘S'和‘\0'兩個(gè)字符組成的字符串,“S”實(shí)際表示的是字符串所在的內(nèi)存地址)

 ?。?)、拼接字符串時(shí),第一個(gè)字符串最后的‘\0'會(huì)被第二個(gè)字符串的第一個(gè)字符取代。

 ?。?)、strlen()函數(shù)返回存儲(chǔ)在數(shù)組中的字符串的長(zhǎng)度,只包括可見(jiàn)的字符,不包括空字符?! ?/p>

 ?。?)、cin使用空白(空格、制表符和換行符)來(lái)確定字符串的結(jié)束位置,所以它讀取數(shù)組輸入時(shí),只讀取第一個(gè)單詞,并自動(dòng)添加空字符。

 ?。?)、面向行的輸入有g(shù)etline()和get(),它們都通過(guò)換行符來(lái)確定輸入結(jié)尾,不同的是,get()并不再讀取并丟棄換行符。

  cin.getline(name,ArSize),將讀取ArSize-1個(gè)字符到name數(shù)組中。對(duì)于get(),可以這樣使用:  cin.get(name,ArSize).get();

 ?。?)、讀取空行時(shí),get()將設(shè)置失效位;如果輸入行包含的字符數(shù)比指定的多,getline()會(huì)設(shè)置失效位。后面的輸入將被阻斷。

 ?。?)、允許:char c[] = {"hello world!"};

 ?。?)、string類(lèi)具有自動(dòng)調(diào)整大小的功能,因此更為安全。

  (10)、strcpy(str1,str2)將str2復(fù)制給str1,  strcat(str1,str2)將str2附加到str1的結(jié)尾。

 ?。?1)、str1.size()和strlen(str1)的功能相同。前者是string類(lèi)的一個(gè)方法,后者是一個(gè)常規(guī)函數(shù)。

21、原始(raw)字符串——原始字符串中,\n不表示換行符,如:    默認(rèn)定界符 ( 和 )  cout << R"(don't use "\n" ,OK?)" << '\n'; 輸出:don't use "\n" ,OK?

  自定義定界符 +*( 和 )+*  cout << R"+*("(don't use "\n" ,OK?)")+*" << '\n'; 輸出:"(don't use "\n" ,OK)"

22、結(jié)構(gòu)——

 ?。?)、定義:  struct  man { char name[20];  double weight;  int age; };

 ?。?)、聲明,允許省略關(guān)鍵字struct,如:  man mike;

 ?。?)、初始化:  man mike {"mike", 56.2, 22};

  (4)、使用成員運(yùn)算符(.)來(lái)訪問(wèn)各個(gè)成員。

 ?。?)、同時(shí)定義結(jié)構(gòu)和創(chuàng)建變量:  struct  man { char name[20];  double weight;  int age; } mike = {"mike", 56.2, 22}, jim ;

  (6)、還可以聲明匿名結(jié)構(gòu):  struct { int x, int y } point ;

23、結(jié)構(gòu)中的位字段——指定占用特定位數(shù)的結(jié)構(gòu)成員,如:  struct my_bit { unsigned int x : 4;  bool  y : 1; };

24、外部聲明——函數(shù)外部的聲明。C++不提倡使用外部變量,提倡使用外部聲明。

25、共用體——

  一種數(shù)據(jù)格式,能夠存儲(chǔ)不同的數(shù)據(jù)類(lèi)型,但只能同時(shí)存儲(chǔ)其中的一種類(lèi)型,常用于節(jié)省內(nèi)存。如:  union id { long long_id ;  char char_id; };

 ?。?)、由于共用體每次只能存儲(chǔ)一個(gè)值,其長(zhǎng)度為最大成員的長(zhǎng)度。

  (2)、匿名共用體沒(méi)有名稱(chēng),其成員將成為位于相同地址處的變量,每次只有一個(gè)成員是當(dāng)前成員。

26、枚舉——

  另一種創(chuàng)建符號(hào)常量的方式,可以代替const。如:  enum spectrum { a , b , c , d , f };

 ?。?)、默認(rèn)情況下,a、b、c、d 、f 作為符號(hào)常量,對(duì)應(yīng)0到4。

 ?。?)、對(duì)于枚舉,只定義了賦值運(yùn)算符,并沒(méi)有定義算術(shù)運(yùn)算。

 ?。?)、只能將定義枚舉時(shí)使用的枚舉量賦給枚舉變量。

 ?。?)、可以使用賦值運(yùn)算符顯式設(shè)置枚舉量的值。如:  enum bits { first , zero = 0 , two = 200 ,three , four };  //這里three的值為201, first 的值為0

  (5)、枚舉的取值范圍。bits的最大值是202,大于它的最小的2的冪為256,所以bits的取值范圍為0—255  

 ?。?)、通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換,增加了可賦值給枚舉變量的合法值,只要在取值范圍內(nèi)。如:  bits b = bits(240);

27、指針——

  指針是一個(gè)變量,存儲(chǔ)的是值的地址,而不是值本身。

 ?。?)、地址運(yùn)算符(&)可以獲得變量的位置(存儲(chǔ)地址)。

 ?。?)、指針,將地址看作指定的量,將值看作派生量。指針名表示地址。

 ?。?)、*運(yùn)算符被稱(chēng)為間接值(解除引用)運(yùn)算符。用于指針可以得到指針地址存儲(chǔ)的值。

  (4)、聲明:  int * a;  // *運(yùn)算符兩邊的空格是可選的  int * b , c;  // 創(chuàng)建指針b和int變量c,每一個(gè)指針都需要一個(gè)*

 ?。?)、初始化:  int * a = &b;  // 將指針a的值設(shè)為&b

 ?。?)、一定要在對(duì)指針使用解除引用運(yùn)算符(*)之前,將指針初始化為一個(gè)確定的、適當(dāng)?shù)牡刂?。 ?/p>

 ?。?)、將數(shù)字賦值給地址:  int * pt = (int * ) 0x8000000;

 ?。?)、分配內(nèi)存:  int *pn = new int;  //從堆(heap)或只有存儲(chǔ)區(qū)(free store)的內(nèi)存區(qū)域分配內(nèi)存。

28、數(shù)組——

  (1)、編譯時(shí)給數(shù)組分配內(nèi)存被稱(chēng)為靜態(tài)聯(lián)編,程序運(yùn)行時(shí)選擇數(shù)組長(zhǎng)度被稱(chēng)為動(dòng)態(tài)聯(lián)編。

  (2)、創(chuàng)建動(dòng)態(tài)數(shù)組:  int * p = new int [10]; // p為該元素第一個(gè)元素的地址

  (3)、釋放數(shù)組:  delete [] p;  // 只能釋放new分配的內(nèi)存;  不能delete兩次;  對(duì)空指針delete安全;  數(shù)組用delete [] 釋放。

 ?。?)、不能使用sizeof運(yùn)算符來(lái)確定動(dòng)態(tài)分配的數(shù)組包含的字節(jié)數(shù)。

  (5)、使用數(shù)組:  p[0]為第一個(gè)元素,p[1]是第二個(gè)?! ?/ C++內(nèi)部使用指針來(lái)處理數(shù)組,p[1]被看作 *(p+1)

  (6)、p = p + 1;  // 指針變量加1后,增加的量為它指向的類(lèi)型的字節(jié)數(shù)。

  (7)、多數(shù)情況下C++將數(shù)組名解釋為數(shù)組第一個(gè)元素的地址。

 ?。?)、指針和數(shù)組名的區(qū)別:  可以修改指針的值,而數(shù)組名是常量;  對(duì)數(shù)組名使用sizeof得到數(shù)組的字節(jié)數(shù),而對(duì)指針使用sizeof得到指針的長(zhǎng)度。

 ?。?)、short tell[10];  cout << tell;  // 數(shù)組名本身為其第一個(gè)元素的地址,如:&tell[0] ,即一個(gè)2字節(jié)內(nèi)存塊的地址。

    cout << &tell;  // 輸出的是一個(gè)20字節(jié)內(nèi)存塊的地址。

  (10)、給cout提供一個(gè)字符的地址,它將從該字符開(kāi)始打印,直到遇到空字符為止。

 ?。?1)、要打印一個(gè)指針的地址,必須把這個(gè)指針強(qiáng)轉(zhuǎn)成另一種指針類(lèi)型,如 (int *) p;

29、使用new創(chuàng)建動(dòng)態(tài)結(jié)構(gòu)——struct1 * s = new struct1;  // 此時(shí),結(jié)構(gòu)標(biāo)識(shí)符是指針,所以不能使用成員運(yùn)算符句點(diǎn)(.),

    // 只能使用箭頭成員運(yùn)算符(->)訪問(wèn)成員或者使用(*s).price 來(lái)訪問(wèn)成員。

30、自動(dòng)存儲(chǔ)、靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)——

  (1)、函數(shù)內(nèi)部定義的常規(guī)變量為自動(dòng)變量,存儲(chǔ)在棧中,后進(jìn)先出(LIFO),程序執(zhí)行中,不斷增大縮小。為自動(dòng)存儲(chǔ)。

  (2)、在函數(shù)外面定義,或聲明變量使用static關(guān)鍵字的變量為靜態(tài)變量。靜態(tài)存儲(chǔ)是整個(gè)程序執(zhí)行期都存在的變量。

 ?。?)、使用new創(chuàng)建的變量為動(dòng)態(tài)存儲(chǔ)。new和delete管理類(lèi)一個(gè)內(nèi)存池,被稱(chēng)為free store 或 heap。

 ?。ㄗ⒁?!棧中自動(dòng)添加和刪除機(jī)制使得占用的內(nèi)存總是連續(xù)的,而new和delete可能導(dǎo)致只有存儲(chǔ)區(qū)不連續(xù))

31、模板類(lèi)vector——類(lèi)似string,也是一種動(dòng)態(tài)數(shù)組,是使用new創(chuàng)建動(dòng)態(tài)數(shù)組的替代品,自動(dòng)使用new和delete管理內(nèi)存。

    #include<vector>  using namespace std;  // 包含頭文件,vector位于std名稱(chēng)空間中

    vector<int> ele(10);  // 創(chuàng)建一個(gè)名為ele的vector對(duì)象,可存儲(chǔ)10個(gè)類(lèi)型為int的元素。

 ?。ㄗ⒁?,C++11中可用列表初始化。類(lèi)型可以是變量)

32、模板類(lèi)array——與數(shù)組一樣,長(zhǎng)度固定,使用棧存儲(chǔ),效率與數(shù)組相同,而更方便、安全。

    #include <array>   using namespace std;  array<int,5> arr;  // 名為 arr 的array對(duì)象,包含5個(gè)int元素。

 ?。ㄗ⒁猓?lèi)型不能是變量!可用列表初始化)

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)三子棋(井字棋)算法

    C語(yǔ)言實(shí)現(xiàn)三子棋(井字棋)算法

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)三子棋(井字棋)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++ GetDlgItem用法案例詳解

    C++ GetDlgItem用法案例詳解

    這篇文章主要介紹了C++ GetDlgItem用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 你不知道的C++中namespace和using的用法實(shí)例

    你不知道的C++中namespace和using的用法實(shí)例

    在C++語(yǔ)言編寫(xiě)的程序中,變量和函數(shù)等的作用范圍是有一定限制的,下面這篇文章主要給大家介紹了一些你不知道的C++中namespace和using的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • C++函數(shù)指針與指針函數(shù)有哪些關(guān)系和區(qū)別

    C++函數(shù)指針與指針函數(shù)有哪些關(guān)系和區(qū)別

    函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,這篇文章主要介紹了C++中函數(shù)指針與指針函數(shù)有哪些關(guān)系和區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值
    2022-08-08
  • CMake編譯中的庫(kù)文件和頭文件鏈接你了解嗎

    CMake編譯中的庫(kù)文件和頭文件鏈接你了解嗎

    這篇文章主要為大家詳細(xì)介紹了CMake編譯中的庫(kù)文件和頭文件鏈接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • c++11 符號(hào)修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind

    c++11 符號(hào)修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind

    這篇文章主要介紹了c++11 符號(hào)修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • C指針原理教程之Ncurses介紹

    C指針原理教程之Ncurses介紹

    Ncurses 提供字符終端處理庫(kù),包括面板和菜單。為了能夠使用ncurses庫(kù),您必須在您的源程序中將curses.h包括(include)進(jìn)來(lái),而且在編譯的需要與它連接起來(lái). 在gcc中您可以使用參數(shù)-lcurses進(jìn)行編譯.
    2019-02-02
  • C語(yǔ)言實(shí)現(xiàn)繪制南丁格爾玫瑰圖的示例代碼

    C語(yǔ)言實(shí)現(xiàn)繪制南丁格爾玫瑰圖的示例代碼

    玫瑰圖中有一種不等半徑的統(tǒng)計(jì)圖稱(chēng)為南丁格爾玫瑰圖,網(wǎng)上很熱門(mén),是一很有藝術(shù)感的漂亮的統(tǒng)計(jì)圖,下面我們就來(lái)看看如何使用C語(yǔ)言繪制它吧
    2024-03-03
  • C/C++宏替換實(shí)現(xiàn)詳解

    C/C++宏替換實(shí)現(xiàn)詳解

    這篇文章主要介紹了C/C++宏替換實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 深入理解goto語(yǔ)句的替代實(shí)現(xiàn)方式分析

    深入理解goto語(yǔ)句的替代實(shí)現(xiàn)方式分析

    本篇文章是對(duì)goto語(yǔ)句的替代實(shí)現(xiàn)方式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評(píng)論