程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++學習筆記(1),學習筆記

C++學習筆記(1),學習筆記

編輯:C++入門知識

C++學習筆記(1),學習筆記


本學習筆記是C++ primer plus(第六版)學習筆記。復習C++基礎知識的可以瞄瞄。

轉載請注明出處http://www.cnblogs.com/zrtqsk/p/3874148.html,謝謝!如下。

 

第一章

 

1、預處理器——#include<iostream>將iostream文件內容添加到程序中。老式C頭文件保留了擴展名.h,而C++頭文件沒有擴展名。

(有些C頭文件被轉換為C++頭文件,去掉擴展名,並在前面加c,如cmath)

 

2、名稱空間——相當於Java中的package,using編譯指令相當於Java中的import。頭文件沒有.h前綴時,類、函數和變量是C++編譯器的標准組件,被放置在名稱空間std中。

 

3、類的本質——類是用戶定義的一種數據類型。類定義描述的是數據格式及其用法,而對象則是根據數據格式規范創建的實體。

 

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

 

第二章

 

5、OOP——面向對象編程的本質是設計並擴展自己的數據類型,讓類型和數據匹配。

 

6、標識符——以一個下劃線開頭的名稱被保留給實現,作全局標識符;以兩個下劃線或下劃線加大寫字母的名稱被保留給實現(編譯器及其使用的資源)使用。

(C++對名稱長度沒有限制)

 

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

 

8、字節——字節通常指8位的內存單元,而C++中的字節依賴於實現。

 

9、運算符——運算符是內置的語言元素。sizeof運算符返回類型或變量的長度(字節)。所以,不同系統中sizeof( int )的返回值可能不同。

 

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

 

11、變量初始化——

  函數內部定義的變量,應該在定義的時候進行初始化,否則它的值是不確定的,為被創建前相應的內存單元保存的值。

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

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

  (3)、int c = {3} 或 int c{3}  //  C++的大括號初始化器用於任何類型(大括號內不包含任何東西時,變量的初始化為0)

 

12、int——計算機處理起來效率最高的長度。除非使用後綴或值太大,C++通常將整形常量存儲為int類型。

 

13、wcha_t——是整形類型,有足夠的空間表示系統使用的最大擴展字符集。使用 iostream 中的 wcin 和 wcout 處理wcha_t流。

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

  (C++11新增類型 char16_t 和 char32_t ,都是無符號的,分別長16位和32位,使用前綴 u 表示前者,前綴 U 表示後者)

 

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

 

15、const——創建常量時最好馬上賦值,如cont int a = 5;常量通常將首字母大寫。

 

16、浮點——float至少32位;double至少48位,且不少於float;long double 至少和double一樣多。這三種類型的指數范圍至少是-37-37。

  (1)、cout.setf()可以控制輸出格式,迫使cout使用定點表示法。因為cout通常會刪除浮點後面的0,如3.3300000顯示為3.33。

  (2)、浮點常量通常為double類型,通常用後綴f或F指定float類型,用後綴l或L指定long double類型。

 

17、強制類型轉換——

  如:(long) thorn  或  long(thorn)

  強制類型轉換不會修改thorn本身,而是創建一個新的、指定類型的值。

  也可以這樣:  static_cast<long> (thorn)  ,它比傳統的強制類型轉換更為嚴格。

 

18、auto——自動推斷類型,關鍵字auto可以不指定變量的類型,編譯器自動把變量的類型設置成與初始值相同,如 auto a = 100;

  不過,auto一般是用於處理復雜類型

 

第四章

 

19、數組——

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

  (編譯器不會檢查使用的下標是否有效。)

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

  (3)、sizeof 作用與數組名時,得到的是整個數組中的字節數。作用於元素時,得到的是該元素的字節數。

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

  可以這樣:  int b[] = {1,2,3,4,5};  讓編譯器計算元素個數。

  (5)、使用列表初始化數組時,可以省略等號(=);大括號內不包含任何內容時,默認所有元素為0;列表初始化禁止縮窄轉換。

  

20、字符串——

  字符串是存儲在內存的連續字節中的一系列字符。

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

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

  (注意!'S'代表字符常量,而"S"表示‘S’和‘\0’兩個字符組成的字符串,“S”實際表示的是字符串所在的內存地址)

  (3)、拼接字符串時,第一個字符串最後的‘\0’會被第二個字符串的第一個字符取代。

  (4)、strlen()函數返回存儲在數組中的字符串的長度,只包括可見的字符,不包括空字符。  

  (5)、cin使用空白(空格、制表符和換行符)來確定字符串的結束位置,所以它讀取數組輸入時,只讀取第一個單詞,並自動添加空字符。

  (6)、面向行的輸入有getline()和get(),它們都通過換行符來確定輸入結尾,不同的是,get()並不再讀取並丟棄換行符。

  cin.getline(name,ArSize),將讀取ArSize-1個字符到name數組中。對於get(),可以這樣使用:  cin.get(name,ArSize).get();

  (7)、讀取空行時,get()將設置失效位;如果輸入行包含的字符數比指定的多,getline()會設置失效位。後面的輸入將被阻斷。

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

  (9)、string類具有自動調整大小的功能,因此更為安全。

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

  (11)、str1.size()和strlen(str1)的功能相同。前者是string類的一個方法,後者是一個常規函數。

 

21、原始(raw)字符串——原始字符串中,\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、結構——

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

  (2)、聲明,允許省略關鍵字struct,如:  man mike;

  (3)、初始化:  man mike {"mike", 56.2, 22};

  (4)、使用成員運算符(.)來訪問各個成員。

  (5)、同時定義結構和創建變量:  struct  man { char name[20];  double weight;  int age; } mike = {"mike", 56.2, 22}, jim ;

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

 

23、結構中的位字段——指定占用特定位數的結構成員,如:  struct my_bit { unsigned int x : 4;  bool  y : 1; };

 

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

 

25、共用體——

  一種數據格式,能夠存儲不同的數據類型,但只能同時存儲其中的一種類型,常用於節省內存。如:  union id { long long_id ;  char char_id; };

  (1)、由於共用體每次只能存儲一個值,其長度為最大成員的長度。

  (2)、匿名共用體沒有名稱,其成員將成為位於相同地址處的變量,每次只有一個成員是當前成員。

 

26、枚舉——

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

  (1)、默認情況下,a、b、c、d 、f 作為符號常量,對應0到4。

  (2)、對於枚舉,只定義了賦值運算符,並沒有定義算術運算。

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

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

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

  (6)、通過強制類型轉換,增加了可賦值給枚舉變量的合法值,只要在取值范圍內。如:  bits b = bits(240);

 

27、指針——

  指針是一個變量,存儲的是值的地址,而不是值本身。

  (1)、地址運算符(&)可以獲得變量的位置(存儲地址)。

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

  (3)、*運算符被稱為間接值(解除引用)運算符。用於指針可以得到指針地址存儲的值。

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

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

  (6)、一定要在對指針使用解除引用運算符(*)之前,將指針初始化為一個確定的、適當的地址。  

  (7)、將數字賦值給地址:  int * pt = (int * ) 0x8000000;

  (8)、分配內存:  int *pn = new int;  //從堆(heap)或只有存儲區(free store)的內存區域分配內存。

  

28、數組——

  (1)、編譯時給數組分配內存被稱為靜態聯編,程序運行時選擇數組長度被稱為動態聯編。

  (2)、創建動態數組:  int * p = new int [10]; // p為該元素第一個元素的地址

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

  (4)、不能使用sizeof運算符來確定動態分配的數組包含的字節數。

  (5)、使用數組:  p[0]為第一個元素,p[1]是第二個。  // C++內部使用指針來處理數組,p[1]被看作 *(p+1)

  (6)、p = p + 1;  // 指針變量加1後,增加的量為它指向的類型的字節數。

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

  (8)、指針和數組名的區別:  可以修改指針的值,而數組名是常量;  對數組名使用sizeof得到數組的字節數,而對指針使用sizeof得到指針的長度

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

    cout << &tell;  // 輸出的是一個20字節內存塊的地址。

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

  (11)、要打印一個指針的地址,必須把這個指針強轉成另一種指針類型,如 (int *) p;

  

29、使用new創建動態結構——struct1 * s = new struct1;  // 此時,結構標識符是指針,所以不能使用成員運算符句點(.)

    // 只能使用箭頭成員運算符(->)訪問成員或者使用(*s).price 來訪問成員。

 

30、自動存儲、靜態存儲和動態存儲——

  (1)、函數內部定義的常規變量為自動變量,存儲在棧中,後進先出(LIFO),程序執行中,不斷增大縮小。為自動存儲。

  (2)、在函數外面定義,或聲明變量使用static關鍵字的變量為靜態變量。靜態存儲是整個程序執行期都存在的變量。

  (3)、使用new創建的變量為動態存儲。new和delete管理類一個內存池,被稱為free store 或 heap。

  (注意!棧中自動添加和刪除機制使得占用的內存總是連續的,而new和delete可能導致只有存儲區不連續)

 

31、模板類vector——類似string,也是一種動態數組,是使用new創建動態數組的替代品,自動使用new和delete管理內存。

    #include<vector>  using namespace std;  // 包含頭文件,vector位於std名稱空間中

    vector<int> ele(10);  // 創建一個名為ele的vector對象,可存儲10個類型為int的元素。

  (注意,C++11中可用列表初始化。類型可以是變量)

 

32、模板類array——與數組一樣,長度固定,使用棧存儲,效率與數組相同,而更方便、安全。

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

  (注意,類型不能是變量!可用列表初始化)

 


高一必修一數學學習筆記, 與 總結

第一章 集合與函數概念
一、集合有關概念
1、集合的含義:某些指定的對象集在一起就成為一個集合,其中每一個對象叫元素。
2、集合的中元素的三個特性:
1.元素的確定性; 2.元素的互異性; 3.元素的無序性
說明:(1)對於一個給定的集合,集合中的元素是確定的,任何一個對象或者是或者不是這個給定的集合的元素。
(2)任何一個給定的集合中,任何兩個元素都是不同的對象,相同的對象歸入一個集合時,僅算一個元素。
(3)集合中的元素是平等的,沒有先後順序,因此判定兩個集合是否一樣,僅需比較它們的元素是否一樣,不需考查排列順序是否一樣。
(4)集合元素的三個特性使集合本身具有了確定性和整體性。
3、集合的表示:{ … } 如{我校的籃球隊員},{太平洋,大西洋,印度洋,北冰洋}
1. 用拉丁字母表示集合:A={我校的籃球隊員},B={1,2,3,4,5}
2.集合的表示方法:列舉法與描述法。
注意啊:常用數集及其記法:
非負整數集(即自然數集) 記作:N
正整數集 N*或 N+ 整數集Z 有理數集Q 實數集R
關於“屬於”的概念
集合的元素通常用小寫的拉丁字母表示,如:a是集合A的元素,就說a屬於集合A 記作 a∈A ,相反,a不屬於集合A 記作 aA
列舉法:把集合中的元素一一列舉出來,然後用一個大括號括上。
描述法:將集合中的元素的公共屬性描述出來,寫在大括號內表示集合的方法。用確定的條件表示某些對象是否屬於這個集合的方法。
①語言描述法:例:{不是直角三角形的三角形}
②數學式子描述法:例:不等式x-3>2的解集是{xR| x-3>2}或{x| x-3>2}
4、集合的分類:
1.有限集 含有有限個元素的集合
2.無限集 含有無限個元素的集合
3.空集 不含任何元素的集合 例:{x|x2=-5}
二、集合間的基本關系
1.“包含”關系—子集
注意: 有兩種可能(1)A是B的一部分,;(2)A與B是同一集合。
反之: 集合A不包含於集合B,或集合B不包含集合A,記作A B或B A
2.“相等”關系(5≥5,且5≤5,則5=5)
實例:設 A={x|x2-1=0} B={-1,1} “元素相同”
結論:對於兩個集合A與B,如果集合A的任何一個元素都是集合B的元素,同時,集合B的任何一個元素都是集合A的元素,我們就說集合A等於集合B,即:A=B
① 任何一個集合是它本身的子集。AA
②真子集:如果AB,且A B那就說集合A是集合B的真子集,記作A B(或B A)
③如果 AB, BC ,那麼 AC
④ 如果AB 同時 BA 那麼A=B
3. 不含任何元素的集合叫做空集,記為Φ
規定: 空集是任何集合的子集, 空集是任何非空集合的真子集。
三、集合的運算
1.交集的定義:一般地,由所有屬於A且屬於B的元素所組成的集合,叫做A,B的交集.
記作A∩B(讀作”A交B”),即A∩B={x|x∈A,且x∈B}.
2、並集的定義:一般地,由所有屬於集合A或屬於集合B的元素所組成的集合,叫做A,B的並集。記作:A∪B(讀作”A並B”),即A∪B={x|x∈A,或x∈B}.
3、交集與並集的性質:A∩A = A, A∩φ= φ, A∩B......余下全文>>
 

小蘇d歐盟學習筆記 1 歐盟是干什的

因此我只好勤勤懇懇的來學習歐盟知識。與大家共勉。 參考書籍為外研社出版的歐盟概覽The Eruopean Union,原作者,John Pinder。譯者,戴炳然。 首先來做一個詞匯筆記。 大家來認識一下歐盟的祖先,歐洲煤鋼共合體:ECSC,European Coal an Steel Community。記住簡稱很重要,比如這次口譯考試就考了UNFCCC。 我們知道的是,EU 是由ECSC 經過多年演變而成的。而EU 呢,前身是歐洲共同體,EC,European community。歐共體有六大創始國。法國,德國,比利時,盧森堡,意大利還有荷蘭。1958 年,又成立了EEC,European Economic Community,歐洲經濟共同體。 了解歐盟,很重要的一點就是了解歐盟成立過程中的一些文件與條約。今天我們首先看到的是Schulman Declaration 舒曼宣言。今年正好是舒曼宣言 60 周年紀念。我們來搜索一下何為舒曼宣言。 ---以下為引用--- 1950 年5 月9 日,舒曼發表著名的歐洲一體化宣言,為歐盟的成立提供了理念。其後不久,在法國的領頭下,歐盟的前身"歐洲煤鋼共同體"成立。 舒曼建議建立一個"超國家"的機構來計劃和領導法國和聯邦德國的煤鋼生產,即"舒曼計劃"(Schulman plan)。舒曼計劃的核心,是將法德兩國的整個煤、鐵、鋼的生產置於一個超越國家的高級機構的管理之下,而且這個組織還對其它歐洲國家敞開大門。該計劃得到聯邦德國、意大利、比利時、荷蘭和盧森堡的響應。6 國於1951 年4 月18 日在法國巴黎簽訂了為期50 年的《歐洲煤鋼聯營條約》(又稱《巴黎條約》),在條約的基礎上建立了歐洲煤鋼共同體(ECSC)。此後,各國尋求更大程度上的合作,並決定優先在經濟領域而不是政治領域加強合作。各國經濟可以通過建立共同參加的經濟組織而聯系得更加緊密。舒曼計劃奠定了歐洲煤鋼聯營和防務共同體的基礎,舒曼也作為"歐洲之父"永遠被載入史冊。 ---引用結束--- 據小蘇從書本上得知,成立的最初目的,實際上是為了歐洲更持久的和平,即durable peace。由於二戰裡,歐洲遭遇罕見的戰爭災害,而德法兩國更是頻頻短兵相接,於是為了更和平的歐洲。 除了政治目的之外,沒有經濟實力與繁榮,這個共同體也不會非常成功。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved