C++程序設(shè)計知識提綱_第1頁
C++程序設(shè)計知識提綱_第2頁
C++程序設(shè)計知識提綱_第3頁
C++程序設(shè)計知識提綱_第4頁
C++程序設(shè)計知識提綱_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、優(yōu)質(zhì)文本第一章 概論C+程序的根本元素:關(guān)鍵字、標(biāo)識符、運算符、標(biāo)點符號1.1算法、程序和語言1.1.1算法和程序算法:對數(shù)據(jù)處理操作的步驟。1.1.2低級語言和高級語言機器語言:由二進制碼組成的指令。匯編語言:用助記符來表示每一條機器指令。高級語言:與人類習(xí)慣語言相近的程序設(shè)計語言。1.2面向過程和面向?qū)ο蟮某绦蛟O(shè)計1.2.1面向過程的程序設(shè)計1.2.2面向?qū)ο蟮某绦蛟O(shè)計1.3C+程序的寫出和運行1.3.1C+程序簡例main是主函數(shù)。程序總是從main函數(shù)開始執(zhí)行。原型:main(int argc,char *argv)標(biāo)識符:給變量等實體所取的名字統(tǒng)稱為標(biāo)識符,只能以下劃線或字母開頭關(guān)鍵

2、字:C+中具有特定含義的詞語句:程序中語句要用“;結(jié)尾,分號是語句的組成局部。1.3.2C+程序從寫出到運行幾個步驟源程序(.cpp):用C+語言寫出的程序。程序代碼(.obj):源程序經(jīng)過編譯程序翻譯,成為用機器語言表示的目標(biāo)程序??蓤?zhí)行文件.exe:把各個相關(guān)文件鏈接起來形成的文件。第二章 根本數(shù)據(jù)、別名和指針2.1根本數(shù)據(jù)數(shù)據(jù)是程序處理的對象而存儲于內(nèi)存空間中。存間的大小與數(shù)據(jù)類型有關(guān),數(shù)據(jù)類型分為根本數(shù)據(jù)類型和導(dǎo)出數(shù)據(jù)類型2.1.1根本數(shù)據(jù)類型數(shù)據(jù)類型:根本數(shù)據(jù)類型、導(dǎo)出數(shù)據(jù)類型根本數(shù)據(jù)類型:字符型、整型、實型、雙精度型、無值型導(dǎo)出數(shù)據(jù)類型:數(shù)組、指針、結(jié)構(gòu)體、共用體、類、枚舉整型:計

3、算機內(nèi)部是以二進制補碼形式表示字符型:ASII碼有128個字符,0-31和128為不可見字符控制字符浮點型:小數(shù)形式、指數(shù)形式數(shù)據(jù)類型存間字節(jié)長度位取值范圍字符char18-128127unsigned char180225整數(shù)短整型short216-3276832767Unsigned short216065535整型int432-231231-1Unsigned int4320232-1長整型long432-231231-1Unsigned long4320232-1實數(shù)float432 -3.4×10-383.4×1038Double864 -1.7×10-

4、3081.7×10308Long double864 -1.7×10-3081.7×103082.1.2數(shù)據(jù)變量的存間、長度和取值范圍數(shù)據(jù)變量的存間:儲存變量的內(nèi)存空間。整數(shù)存儲安置規(guī)那么:變量值的高位字節(jié)存于高地址的內(nèi)存單元中,低位字節(jié)存于低地址的內(nèi)存單元中。存間長度運算符:sizeof某變量類型變量的長度:變量的字節(jié)數(shù)×8=變量值的二進制位數(shù)。2.1.3數(shù)據(jù)變量的表示整數(shù)的表示:八進制:以0開頭。十六進制:以0x或0X開頭后綴L或l為long型;后綴U或u為unsigned int型;同時后綴L和U為unsigned long型。實數(shù)的表示一般形式:

5、科學(xué)計數(shù)法:0.75e+9表示0.75×109,小數(shù)點前留一位為標(biāo)準(zhǔn)科學(xué)計數(shù)法;E可大寫可小寫,前后必須有數(shù)字。后綴F或f為float型,無后綴默認為double型。字符的表示:對于可以通過鍵盤輸入的、可顯示的字符,可用單引號闊氣來;對于不可以通過鍵盤輸入的,不可顯示的字符,用轉(zhuǎn)義字符;對ASCII碼中任一字符,都可用反斜杠后跟一個八進制或十六進制數(shù)用單引號括起來表示101和x41都表示字符A。字符可以對整型變量賦值,ASCII碼范圍內(nèi)的整數(shù)也可以對字符型變量賦值,字符進行運算時,以其ASCII碼值參與運算。2.1.4字符串常量及其值字符串常量是用一對英文雙引號括起來的不可改變的字符

6、序列。2.1.5數(shù)據(jù)變量的聲明和賦值2.1.6數(shù)據(jù)變量的訪問2.2別名2.2.1別名變量概念2.2.2別名變量的聲明2.2.3用別名對變量進行訪問2.3指針2.3.1地址概念2.3.2指針變量概念2.3.3指針變量的聲明和賦值2.3.4用指針對變量進行訪問 C+動態(tài)內(nèi)存分配:new 類型名(初始值列表)/開辟存儲類型空間new 類型名下標(biāo)表達式1下標(biāo)表達式2/創(chuàng)立儲存數(shù)組的空間new 類名(初始值列表) /創(chuàng)立對象如果內(nèi)存開辟失敗,對應(yīng)指針應(yīng)該為NULL,這是判斷內(nèi)存是否成功被開辟的標(biāo)志:int *pnValue;pnValue=new int(3);if(pnValue=NULL)exit(

7、0);開辟空間后一定要保持指針始終指向給內(nèi)存對于動態(tài)數(shù)組中的操作:一是利用下標(biāo)操作,二是另外聲明一個指針來遍歷數(shù)組。動態(tài)內(nèi)存開辟后,最好進行初始化:memset(指針名,初始值,開辟空間的總字節(jié)數(shù));sizeof(*p)計算出的是指針?biāo)純?nèi)存的大小,并不是指向內(nèi)存空間的大小利用delete釋放指針后將指針置為NULL;delete plArray;plArray=NULL;C風(fēng)格的動態(tài)內(nèi)存分配方法:開辟動態(tài)內(nèi)存malloc函數(shù):void *malloc(size_t size)包含頭文件:<stdlib.h>、<malloc.h>size_t是需要分配內(nèi)存的字節(jié)數(shù)如果開

8、辟內(nèi)存成功,返回void類型指針;如果失敗返回空指針如果需要的不是void類型內(nèi)存空間,需要進行強制類型轉(zhuǎn)換釋放函數(shù)free:void free(void *pointer);函數(shù)間的動態(tài)內(nèi)存?zhèn)鬟f:利用引用類型參數(shù)傳遞動態(tài)內(nèi)存(推薦使用):void GetMen(char* &p,size_t size);利用二級指針參數(shù)傳遞動態(tài)內(nèi)存:void GetMen(char *p,size_t size);利用函數(shù)返回至來傳遞動態(tài)內(nèi)存char *GetMen(size_t size);2.3.5二級指針變量概念2.3.6使用指針要特別注意指針的指向淺復(fù)制容易產(chǎn)生野指針,深復(fù)制會產(chǎn)生大量資源智

9、能指針2.4對數(shù)據(jù)變量的保護2.4.1用const聲明常值數(shù)據(jù)變量#define宏定義預(yù)處理命令:#define 常量名 值const 數(shù)據(jù)類型 變量名 = 常值數(shù)據(jù)類型 const 變量名 = 常值常量的值保持不變,不允許再賦值2.4.2在聲明中用const對指針變量進行限定聲明常值指針變量:數(shù)據(jù)類型 *const 指針變量名 = 常地址;指針變量的值保持不變,指向恒定聲明只讀指針變量:const 數(shù)據(jù)類型 *指針變量名;指針?biāo)钢豢勺x不可寫聲明常值只讀指針變量:const 數(shù)據(jù)類型 *const 指針變量名 = 常地址;2.4.3在聲明中用const對別名變量進行限定聲明只讀別名變量:co

10、nst 數(shù)據(jù)類型 &別名變量名 = 變量名第三章 數(shù)據(jù)的運算和簡單的輸入輸出運算3.1運算符和表達式運算符優(yōu)先級:圓括弧是一級優(yōu)先二級優(yōu)先全是單目運算符,可稱單目塊35級可稱為加減乘除塊。其中左右位移運算相當(dāng)于乘和除6、7級優(yōu)先可稱為關(guān)系塊812級優(yōu)先可稱為邏輯塊,其中810是按位邏輯塊1315優(yōu)先級可稱為條件、賦值、逗號塊3.2sizeof運算符和sizeof表達式3.3算數(shù)運算符和算數(shù)表達式3.4關(guān)系運算符和關(guān)系表達式3.5邏輯運算符和邏輯表達式3.6位運算符和位運算表達式3.7條件運算符和條件表達式3.8賦值運算符和賦值表達式3.9逗號運算符和逗號表達式3.10根本數(shù)據(jù)混合運算是

11、數(shù)據(jù)類型的轉(zhuǎn)換3.10.1隱性類型轉(zhuǎn)換賦值運算中的隱性類型轉(zhuǎn)換如果有操作數(shù)長度長,而左操作數(shù)長度短,賦值時按低位優(yōu)先的原那么將右操作數(shù)賦入左操作數(shù)存間,存間裝滿為止,剩下的高位數(shù)被舍棄。3.10.2強迫類型轉(zhuǎn)換語法形式:類型說明符表達式;類型說明符表達式;類型說明符表達式3.11指針的增減運算3.12簡單的輸入輸出運算3.12.1輸入流和輸出流3.12.2提取運算符>>和插入運算符<<3.12.3提取表達式和插入表達式3.12.4根本數(shù)據(jù)的輸入和輸出字符串的輸出想要輸出一條字符串,只要將字符串的首字符指針作為插入運算符<<的右操作數(shù)就行:cout<&l

12、t;dkfjs;/雙引號括起來的字符串可以看做是一個字符串表達式,字符串表達式的值就是字符串的周字符指針char*p = “skdjf;cout<<p;3.13簡單輸入輸出的格式控制3.13.1輸入/輸出的默認格式整數(shù)按十進制數(shù)出實數(shù)按十進制浮點輸出,有效數(shù)字6位當(dāng)實數(shù)的整數(shù)局部大于或等于7位時,那么轉(zhuǎn)化為科學(xué)計數(shù)法輸出。當(dāng)小數(shù)點后連續(xù)有4個或4個以上零,那么轉(zhuǎn)換為科學(xué)計數(shù)法輸出以上輸出寬度域?qū)捤甲址麛?shù)均默認為0,靠右對齊假設(shè)實際輸出字符大于域?qū)挄r,按實際字符輸出3.13.2用格式控制符對格式進行控制控制工程控制符功能有效期進制dec輸入或輸出整數(shù)時用十進制表示長效Hex輸入輸出

13、整數(shù)時用十六進制表示長效iostream0ct輸入輸出整數(shù)時用八進制表示長效換行endl輸出時換行并進行刷新短效無域?qū)抯etw(int)出數(shù)據(jù)的域?qū)挘坑叶绦э@示余項空格填充iomanip填充setfill(char)對輸出域余用字符填充長效精度setprecision(int)設(shè)置實數(shù)輸出精度長效第四章 程序的流程控制4.1程序流程的根本結(jié)構(gòu)4.2選擇結(jié)構(gòu)語句4.3循環(huán)結(jié)構(gòu)語句4.4其他控制語句和函數(shù)4.4.1break語句4.4.2continue語句4.4.3goto語句4.4.4abort函數(shù)和exit函數(shù)Abort函數(shù)和exit函數(shù)都是C+標(biāo)準(zhǔn)庫cstdlib中的兩個函數(shù)。Void

14、abortVoid exitint status這兩個函數(shù)的作用都是終止整個程序的運行,將控制返還給操作系統(tǒng)。但前者僅僅結(jié)束程序的運行,不做任何善后工作。而后者在終止前做些收尾工作,例如關(guān)閉翻開的文件、寫完緩沖輸出的內(nèi)容、收回變量存間等。參數(shù)status置0表示正常退出,置1那么表示異常退出第五章 函數(shù)5.1函數(shù)的概念5.1.1函數(shù)的概述5.1.2函數(shù)的定義當(dāng)返回值的類型為int型時,可省略標(biāo)識符5.2對函數(shù)的調(diào)用5.2.1被調(diào)函數(shù)的函數(shù)原型聲明函數(shù)原型聲明中的形式參數(shù)表,只要求按函數(shù)定義中各形參的類型、次序、個數(shù)寫正確就行,至于形參的名稱不寫甚至寫錯也不要緊。5.2.2函數(shù)的調(diào)用5.2.3函

15、數(shù)調(diào)用流程三步驟:中斷、轉(zhuǎn)移、返回。在中斷時,把當(dāng)時的現(xiàn)場數(shù)據(jù)和地址儲存起來。在返回時把現(xiàn)場數(shù)據(jù)和地址取出。根據(jù)這地址就能精確的回到原流程處5.2.4函數(shù)的遞歸調(diào)用要形成函數(shù)的遞歸調(diào)用,這遞歸關(guān)系和遞歸終止條件二者缺一不可5.3函數(shù)內(nèi)外變量的作用域和生存期5.3.1作用域函數(shù)內(nèi)的塊作用域:用花括號括起來的局部稱為一個塊,在塊內(nèi)聲明的變量,其作用域開始于變量的聲明處,結(jié)束于塊的結(jié)尾處。在同一作用域內(nèi),不能聲明同名變量在沒有互相包含關(guān)系的不同的作用域中,允許聲明同名變量。它們各在各的作用域內(nèi)使用,互不干擾。在互相間又包含關(guān)系的作用域中,也允許聲明同名變量。不過,在使用同名變量時,在被包含的內(nèi)層作用

16、域中,只能使用內(nèi)層作用域所聲明的同名變量同時自動覆蓋掉外層的同名變量。或者說,在內(nèi)層中,對外層的同名變量是不可見的。這種情況也可簡稱為“內(nèi)層同名優(yōu)先。和for語句有關(guān)的作用域:假設(shè)在for語句的圓括弧內(nèi)聲明了某變量,那么該變量就如同在for語句所在的作用域內(nèi)聲明一樣,該變量作用域從聲明處開始至for語句所在作用域結(jié)束為止。假設(shè)在for語句的循環(huán)體內(nèi)聲明了某變量,那么該變量的作用域就只在循環(huán)體范圍內(nèi),作用域從聲明處開始至循環(huán)體結(jié)束處為止。文件作用域:在所有函數(shù)值為所聲明的變量稱為全局變量。全局變量的作用域是從聲明處開始到文件結(jié)束處為止。這個作用域稱為文件作用域。如果要在局部變量的作用域內(nèi)訪問與局

17、部變量同名的全局變量,那么可在同名變量前加域運算符“:來進行訪問。5.3.2生存期靜態(tài)生存期:從變量的作用域開始,變量因系統(tǒng)配給空間而開始存活。如果在作用與結(jié)束時,存間未被收回而仍然占用著。要一直等到主函數(shù)結(jié)束時,也就是整個程序結(jié)束時,系統(tǒng)才收回該變量的存間,從而使該變量消亡。對于局部變量,假設(shè)在其聲明語句的類型前面加static,那么該變量的生存期就是靜態(tài)生存期。變量就是靜態(tài)變量。對于全局變量,無需加static,他天生就是靜態(tài)變量。因為他本來就是從聲明處開始獲得存間而存活,直到主函數(shù)結(jié)束,存間才被收回而消亡靜態(tài)變量必須在聲明語句中設(shè)置初值。如未設(shè)置初值,那么系統(tǒng)會自動設(shè)置初值0。靜態(tài)變量的

18、聲明語句只執(zhí)行一次。5.4函數(shù)內(nèi)外的數(shù)據(jù)傳遞5.4.1函數(shù)通過參數(shù)進行數(shù)據(jù)傳遞參數(shù)的別名傳遞:訪問別名變量于被調(diào)函數(shù)之內(nèi),效達實名變量于主調(diào)函數(shù)之中。雙向傳遞參數(shù)的地址傳遞:訪問指針?biāo)赣诒徽{(diào)函數(shù)之內(nèi),效達所指變量于主調(diào)函數(shù)之中。雙向傳遞參數(shù)的值傳遞:主調(diào)函數(shù)將數(shù)據(jù)傳遞給被調(diào)函數(shù)。單向傳遞5.4.2具有默認值的參數(shù)傳遞具有默認參數(shù)的函數(shù):默認參數(shù)的說明必須出現(xiàn)在函數(shù)調(diào)用之前,不可重復(fù)說明。參數(shù)的默認值可以使表達式,但表達式必須有確定的值。默認參數(shù)可以有多個,但必須在參數(shù)表中靠右邊排列。同一個函數(shù)在不同的作用域內(nèi),可提供不同的默認參數(shù)值。在不同作用域中進行聲明5.4.3函數(shù)通過返回值進行數(shù)據(jù)傳遞

19、返回一個根本數(shù)據(jù)值返回一個靜態(tài)變量的地址:靜態(tài)變量延長了變量的生存期,但作用域并未改變。所以可以通過訪問指針?biāo)福瑏碓L問變量名失效的靜態(tài)變量返回一個靜態(tài)變量的別名:在主調(diào)函數(shù)中,函數(shù)調(diào)用式可作為該靜態(tài)變量的別名來使用5.4.4函數(shù)通過全局變量傳遞數(shù)據(jù)除非特別需要,一般不使用全局變量5.5內(nèi)聯(lián)函數(shù)和函數(shù)的重載內(nèi)聯(lián)函數(shù)在定義函數(shù)時,在前面冠以關(guān)鍵字inline:內(nèi)聯(lián)函數(shù)也應(yīng)該定義在前,使用在后。在C+中,除函數(shù)體內(nèi)含有循環(huán)、switch分支和復(fù)雜嵌套的if語句外,所有函數(shù)均可定義為內(nèi)聯(lián)函數(shù)。用戶確定函數(shù)的內(nèi)聯(lián),只是一個“內(nèi)聯(lián)的建議。到時候是否真的照“內(nèi)聯(lián)執(zhí)行,要由編譯器決定。函數(shù)重載:形參類型不同

20、;形參個數(shù)不同。5.6用指針對函數(shù)進行操作處理5.6.1函數(shù)指針函數(shù)地址:首內(nèi)存單元地址叫做函數(shù)的入口地址,簡稱為函數(shù)地址函數(shù)名就是函數(shù)地址函數(shù)指針變量:專門用來存放函數(shù)地址的變量。5.6.2函數(shù)指針的聲明和賦值聲明一個函數(shù)指針變量時,需要說明所指函數(shù)的類型和形參表。一般形式:數(shù)據(jù)類型*函數(shù)指針名形參表;函數(shù)指針變量的初始化和賦值:Double funint,int,double;Double*pint,int,double=fun;Double funint,int,double;Double*pint,int,double;P=fun;Double funint,int,double,*p

21、int,int,double=fun;5.6.3用函數(shù)指針調(diào)用函數(shù)用函數(shù)指針調(diào)用函數(shù)的形式和用函數(shù)名調(diào)用函數(shù)的形式是一致的,只不過是把函數(shù)名換成函數(shù)指針名:函數(shù)指針名實際參數(shù)表;5.6.4用通用函數(shù)處理函數(shù)主函數(shù)以具體函數(shù)的地址為實參調(diào)用通用函數(shù),而通用函數(shù)那么以同類型函數(shù)指針變量作為形參,來接納具體函數(shù)的地址。5.7函數(shù)的多文件組織5.7.1模塊化程序設(shè)計模塊化程序設(shè)計:自頂而下,逐步細化,模塊化。5.7.2原文件之間的訪問源文件之間對全局變量的訪問:如果本文件中所聲明的全局變量屬本文件私用,不允許別的文件訪問,那么必須在全局變量類型前加修飾詞static。如果本文件要用到別的文件中允許訪問

22、的全局變量,那么本著先聲明后使用的原那么,應(yīng)先照原樣做變量聲明在聲明前加修飾詞extern。原文件之間對函數(shù)的訪問:與全局變量類同。不允許別的文件訪問,在原型聲明前加static,使用其他文件中可以訪問的函數(shù),做原型聲明,并在前加extern5.7.3頭文件頭文件:將函數(shù)原型和全局變量加extern修飾集中起來,還有一些常數(shù)定義,放在一起寫成一個文件,供各個相關(guān)的源文件使用5.7.4多文件組織的編譯和鏈接包含文件:在定義main函數(shù)的源文件中,將組成同一程序的其他文件用包含指令#include包含進來。由編譯程序?qū)@些文件一起編譯,并鏈接成一個可執(zhí)行文件。工程文件的方法:將組成一個程序的所有文

23、件都加到工程文件中,由編譯器自動完成多文件組織的編譯和鏈接。5.8編譯預(yù)處理5.8.1#include指令又叫文件包含指令。使用:執(zhí)行時將所指定的文件嵌入到該語句處,替換該語句??汕短资褂?。形式:#include<文件名>:用于包含C+庫函數(shù)頭文件。搜索該文件時系統(tǒng)直接到存放C+庫函數(shù)頭文件所在的目錄中查找所要包含的文件,這叫按標(biāo)準(zhǔn)方式搜索文件。#include文件名:用于包含用戶自己編寫的頭文件。系統(tǒng)先在當(dāng)前目錄中搜索該文件,假設(shè)搜索不到,再按標(biāo)準(zhǔn)方式進行搜索。5.8.2#define和#undef指令#define指令宏指令:#define 宏名 宏定義內(nèi)容宏名常用大寫字母表示

24、;可以出現(xiàn)在程序中的任何位置,一般放在原文件開頭;在宏擴展時,只是用原封不動的宏定義內(nèi)容來替換宏名;當(dāng)宏名出現(xiàn)在字符串中時,編譯預(yù)處理對宏名不進行宏拓展。#undef指令終止宏指令:#undef 宏名終止宏的作用域5.9條件編譯5.9.1以宏名已被定義或未被定義作為條件#ifdef 宏名程序段#endif#ifdef 宏名程序段1else程序段2#endif#ifndef 宏名程序段#endif#ifndef程序段1else程序段2#endif5.9.2以表達式邏輯為1或0作為條件#if 表達式程序段#endif#if 表達式程序段1else程序段2#endif5.9.3關(guān)于條件編譯的說明表達

25、式必須有確定的值,只能是常量的運算??梢猿霈F(xiàn)在程序中的任何位置。第六章 數(shù)組6.1一維數(shù)組6.1.1一維數(shù)組的聲明及初始化6.1.2對一維數(shù)組元素的直接訪問6.1.3用一維數(shù)組名對元素進行訪問一維數(shù)組名既是整個數(shù)組之名同時又是數(shù)組首元素之地址。數(shù)組名不是變量,系統(tǒng)不配給它變量存間。因此對數(shù)組名不能作賦值、自增或自減等涉賦運算,不能進行自增或自減走步。6.1.4用指針變量對一維數(shù)組元素進行訪問用元素指針變量做被調(diào)函數(shù)形參用一維數(shù)組做被調(diào)函數(shù)形參:Void fundouble x8;Void fundouble x,int n;Void fundouble *x,int n;6.1.5用數(shù)組名實參

26、調(diào)用函數(shù)對一維數(shù)組進行處理6.2二維數(shù)組6.2.1二維數(shù)組的聲明及初始化6.2.2對二維數(shù)組元素的直接訪問6.2.3用二維數(shù)組名對元素進行訪問二維數(shù)組名是首行地址,是指向首行的指針。所指目標(biāo)是行,所以是按行走步的,走的是行步。各行的數(shù)組名是各行的首元素地址,所指目標(biāo)是元素,所以是按元素走步的。實際是按列走步,走的是列步*b+i+j等價于bij系統(tǒng)不作為變量配給存間,不可做賦值、自增或自減運算。二維數(shù)組的首元素地址可表示為:&b00、&b0、*b6.2.4用指針變量對二維數(shù)組元素進行訪問元素指針變量:指向元素的指針,按元素走步。二維數(shù)組名是首行指針按行走步,元素指針變量按元素走步

27、。所以,不能直接用二維數(shù)組名對元素指針賦值int b35;int *p;p=(int*)b;實在要賦值,必須先按指針的類型進行強制類型轉(zhuǎn)換*(p+n*i+j)等價于bij一維數(shù)組指針變量:數(shù)據(jù)類型*指針變量名常量表達式與二維數(shù)組列數(shù)相等可以用二維數(shù)組名直接賦值6.2.5用首元素地址或數(shù)組名作實參調(diào)用函數(shù)對二維數(shù)組進行處理效果直達主調(diào)函數(shù)6.3關(guān)于字符串的處理6.3.1字符串的輸入和輸出用一維數(shù)組對字符串逐個字符輸入和輸出:采用循環(huán)語句用“cin>>和“cout<<對字符串進行輸入和輸出:只需給出數(shù)組名無法輸入空格用函數(shù)cin.getline對字符串進行輸入:cin.ge

28、tline(首地址,長度)6.3.2用一維字符串?dāng)?shù)組處理字符串用字符串初始化一維字符數(shù)組:采用逐個字符初始化時,末尾加0;字符串整體初始化:char s220 = “a sting;Char s320 = “a string;6.3.3用庫函數(shù)處理字符串頭文件:cstring復(fù)制:char *strcpy(char x,char *y) 將y復(fù)制到x中拼接:char *strcat(char x,char *y) 26.4關(guān)于字符串組的處理6.4.1用二維數(shù)組處理字符串組6.4.2用一維字符指針數(shù)組處理字符串組6.4.3用一維字符指針數(shù)組名做實參調(diào)用函數(shù)處理字符串組6.5動態(tài)配給存間6.5.1

29、new運算符的用法同類型指針變量 = new 類型名;同類型指針變量 = new 類型名初值;同類型指針變量 = new 類型名元素個數(shù);同類型指針變量 = new 類型名行數(shù)列數(shù)配給成功返回存間地址;配給失敗返回空指針0;6.5.2delete運算符的用法delete 指針名delete 指針名delete 行數(shù)指針名第七章 枚舉類型和結(jié)構(gòu)類型7.1枚舉類型7.1.1枚舉類型概念枚舉類型:取值范圍只局限在某些數(shù)據(jù)組成的集合之內(nèi)的變量。枚舉類型的定義:enum 枚舉類型名枚舉元素列表枚舉元素又叫枚舉值或枚舉常量枚舉元素的整型值:枚舉元素具有整形值,假設(shè)不另行設(shè)置,枚舉元素的整型值依次默認為0、

30、1、2、3。設(shè)置整型值:Enum weekdaysunday=7,Monday=1,Tuesday,Wednesday,Thursday,F(xiàn)riday,Saturday;對于Monday以后的枚舉元素的值未設(shè)置,系統(tǒng)會按順序逐個加1在數(shù)學(xué)運算時枚舉型數(shù)據(jù)會自動轉(zhuǎn)換為整型值參與運算。7.1.2枚舉變量的聲明和賦值枚舉變量的聲明:枚舉類型名 枚舉變量名;枚舉變量既已聲明系統(tǒng)會對枚舉變量配給int型存間,每個枚舉變量存間占四個內(nèi)存單元聲明的三種方法:在定義枚舉類型以后,另行聲明;在定義枚舉類型的同時進行聲明;在定義枚舉類型時,不取枚舉類型名,直接聲明枚舉變量賦值:可以用枚舉元素對枚舉變量進行賦值。同

31、類型枚舉變量也可以相互賦值。不能直接賦整型值,要經(jīng)過強制類型轉(zhuǎn)換;具有整型值可參與數(shù)值運算,不可進行涉賦類運算,必要時先進行強制類型轉(zhuǎn)換;枚舉類型是標(biāo)識符,不能直接輸入輸出,只能輸入整型值,輸出對應(yīng)字符串;對枚舉類型進行輸出時,顯示整型值。7.1.3調(diào)用函數(shù)對枚舉變量輸入和輸出通過switch語句實現(xiàn)7.1.4枚舉元素的組合狀態(tài)枚舉元素標(biāo)識位:枚舉元素整型值按2的倍數(shù)遞增,使所有枚舉元素都有一個各自專用的二進制位枚舉元素組合的狀態(tài)字:可用一個整數(shù)flag來說明元素組合狀態(tài)。計算時,個元素的整型值按位或運算求得flag值7.2C+用格式狀態(tài)字表示輸入輸出格式的組合7.2.1將各個輸入輸出格式定義

32、為各個枚舉元素這些枚舉元素是C+在iOS域中定義的,使用時,應(yīng)該加域運算符“ios:。7.2.2用格式狀態(tài)字flag表示多項格式組合狀態(tài)格式狀態(tài)字flag:多項格式整型值按位或7.2.3用格式狀態(tài)字通過格式控制符對多項格式的組合進行控制setiosflagsint flag設(shè)置格式狀態(tài)字flag,說明格式組合狀態(tài)resetiosflagsint flag終止setiosflagsint flag的設(shè)置7.3結(jié)構(gòu)類型7.3.1結(jié)構(gòu)類型的定義一般格式:struct 結(jié)構(gòu)類型名數(shù)據(jù)類型1 成員變量1數(shù)據(jù)類型2 成員變量27.3.2結(jié)構(gòu)類型變量的聲明、初始化和賦值結(jié)構(gòu)類型變量所占空間:理論上是各個成員

33、存間之和。但實際上為了提高對內(nèi)存的存取速度,分配給各個結(jié)構(gòu)成員的內(nèi)存空間以字4字節(jié)為單位,以保證其地址在字的整數(shù)倍處。初始化:在大括號中,將所有成員之值依次排列,相互用逗號隔開靜態(tài)成員:必須在結(jié)構(gòu)體類型創(chuàng)立對象之前為靜態(tài)成員設(shè)置初值:數(shù)據(jù)類型 結(jié)構(gòu)體類型:靜態(tài)成員=初值;靜態(tài)成員屬于結(jié)構(gòu)體,所有該結(jié)構(gòu)體類型的變量共享靜態(tài)成員7.3.3對結(jié)構(gòu)類型變量的成員進行訪問一般形式:結(jié)構(gòu)型變量.成員名7.3.4結(jié)構(gòu)類型數(shù)組7.4鏈表7.4.1鏈表的組成7.4.2如何表示節(jié)點成員變量7.4.3對鏈表結(jié)點的操作7.4.4插入節(jié)點7.4.5建立有序新鏈表7.4.6輸出鏈表各節(jié)點的數(shù)據(jù)7.4.7刪除結(jié)點7.4.8

34、釋放鏈表7.5用typedef來定義某類型的又一個標(biāo)識符7.5.1方法步驟typedef 類型名 類型名別名先按聲明變量的方法,寫出聲明語句:int*p;函數(shù)指針將變量名換成想要定義的標(biāo)識符:int*POINTER;在最前面加typedef第八章 類和對象8.1概述8.2類8.2.1類的定義8.2.2對類內(nèi)各成員訪問的控制規(guī)那么8.2.3類的引用性聲明8.2.4面向?qū)ο蟪绦蛟O(shè)計的多文件組織8.3對象8.3.1對象的聲明8.3.2對象的初始化8.3.3同類對象之間的整體賦值8.3.4訪問對象的數(shù)據(jù)成員和成員函數(shù)8.3.5指向本對象的this指針8.4構(gòu)造函數(shù)8.4.1構(gòu)造函數(shù)的作用特點和定義形式

35、8.4.2對構(gòu)造函數(shù)的兩點說明8.4.3拷貝構(gòu)造函數(shù)的作用特點和定義形式C+會自動生成復(fù)制構(gòu)造函數(shù)和賦值操作符重載當(dāng)對象中含有指針,涉及動態(tài)分配空間時,必須要重新定義:C+自動產(chǎn)生的復(fù)制構(gòu)造函數(shù)會將對象中的指針直接賦值給新建對象的指針,我們應(yīng)該將指針中的地址賦值給指針:先得到指針,然后取指向內(nèi)容,然后動態(tài)分配內(nèi)存空間,把得到的地址賦值給指針8.4.4構(gòu)造函數(shù)和new運算符深復(fù)制和淺復(fù)制自動生成的復(fù)制構(gòu)造函數(shù)為淺復(fù)制淺復(fù)制時只復(fù)制指針不復(fù)制指針?biāo)竷?nèi)容,兩個指針指向同一個存間的內(nèi)容,這個存間的內(nèi)容改變時,兩個指針指向內(nèi)容都改變深復(fù)制時對指針?biāo)竷?nèi)容也進行復(fù)制,兩個指針指向不同,但指向存間的內(nèi)容相

36、同:改變存間的內(nèi)容只會影響一個在復(fù)制時創(chuàng)立新的存間然后將原內(nèi)容復(fù)制過來8.4.5默認的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)8.5析構(gòu)函數(shù)8.5.1析構(gòu)函數(shù)的作用特點和定義形式如果自定義了析構(gòu)函數(shù),就必須自定義復(fù)制構(gòu)造函數(shù)和賦值操作符重載如果構(gòu)造函數(shù)進行了動態(tài)分配內(nèi)存,連接了數(shù)據(jù)庫,翻開了文件,就必須自定義析構(gòu)函數(shù)來關(guān)閉這些8.5.2默認的析構(gòu)函數(shù)8.6類的靜態(tài)成員8.6.1靜態(tài)數(shù)據(jù)成員靜態(tài)數(shù)據(jù)成員:描述類屬性的數(shù)據(jù)作為類的數(shù)據(jù)成員,前面要用關(guān)鍵詞static進行修飾。靜態(tài)成員不屬于對象,而屬于類。靜態(tài)數(shù)據(jù)成員的聲明:在類的定義中只要冠以static修飾做引用性聲明。在類的定義中不可初始化靜態(tài)數(shù)據(jù)成員,在類的

37、定義外用域運算符做一個正式聲明:類型 類名:靜態(tài)數(shù)據(jù)成員名;或 類型 類名:靜態(tài)數(shù)據(jù)成員名=初值;正式聲明時分配存間。特例:靜態(tài)整形常量可以在聲明時賦值static const int 變量名 = 常值;在類內(nèi)對靜態(tài)成員的訪問,和其他成員一樣,不管是公有還是私有所有成員函數(shù)都可訪問它。類外對公有靜態(tài)成員的訪問:通過對象名直接訪問;通過類名直接訪問。類外對私有靜態(tài)成員的訪問:設(shè)置屬于類的公有靜態(tài)成員函數(shù),作為類屬對外的接口。8.6.2靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)中不能使用this指針:this是指向當(dāng)前對象的指針,而靜態(tài)成員屬于類,與對象無關(guān)。8.7類的友元8.7.1友元的概念8.7.2運用友元的一

38、個問題8.7.3友元聲明的一般形式8.7.4關(guān)于友元的幾點說明8.8類的嵌套8.8.1類嵌套的關(guān)系8.8.2嵌套類構(gòu)造函數(shù)的定義和調(diào)用8.8.3嵌套類構(gòu)造函數(shù)的定義形式第九章 繼承與派生9.1繼承與派生的根本概念9.1.1繼承、派生、基類、派生類的概念9.1.2積累和派生類的構(gòu)成形式多脈繼承和單脈繼承多級繼承多脈多級混合繼承9.1.3派生類成員的組成和身份確實定派生類成員的組成:構(gòu)造函數(shù)和析構(gòu)函數(shù)、原基類成員組、新增成員組。作用:原基類成員組表達了派生類繼承了基類的全部特征和功能;新增成員組表達了派生類在功能上比基類有所開展;派生類在新增成員中,可設(shè)置與原基類成員同名的成員特別是同名的成員函數(shù)

39、,其函數(shù)體可以有所不同。這表達了派生類可以對所繼承的基類的特征和功能加以改良。9.2派生類9.2.1派生類的一個簡例9.2.2派生類的定義形式Class 派生類名:繼承方式 基類名1,繼承方式 基類名2Private:私有成員Public:公有成員9.2.3派生類成員、存間及身份具體確定9.2.3派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)9.3對派生類中同名成員的二義性的處理9.3.1類名加域運算符:處理法派生類內(nèi)訪問同名成員:類名:數(shù)據(jù)成員類名:成員函數(shù)名參數(shù)表派生類外對對象訪問同名成員:派生類對象名.類名:數(shù)據(jù)成員名派生類對象名.類名:成員函數(shù)名參數(shù)表派生類外對對象指針訪問同名成員:派生類對象指針名-&g

40、t;類名:數(shù)據(jù)成員名派生類對象指針名->類名:成員函數(shù)名參數(shù)表9.3.2同名覆蓋原理訪問派生類中新增同名成員:通過對象直接訪問9.3.3對共同基類經(jīng)多級多脈繼承發(fā)生同名成員的處理類名加域運算符9.3.4用虛基類防止一個數(shù)據(jù)多種版本問題一個數(shù)據(jù)多個版本來歷:當(dāng)派生類含有兩個或多個從一個共同基類派生而來的基類時,派生類在繼承時,就會使共同基類的成員在此派生類中有多個版本措施:在定義共同基類的直接派生類時,在共同基類的繼承方式前加關(guān)鍵字“virtual。把共同基類設(shè)置為虛基類。class 共同基類直接派生類名:繼承方式 共同基類名virtual只對緊跟其后的基類起作用對于虛基類,所有直接和間接

41、派生類的基類初始化列表中都必須包含對虛基類的初始化列表?;蛘撸摶惖臉?gòu)造函數(shù)中必須由默認值當(dāng)定義某派生類時,只有該派生類對虛基類構(gòu)造函數(shù)進行調(diào)用只調(diào)用一次9.4類的賦值兼容9.4.1共有派生類對象可以頂替基類對象公有基類成員經(jīng)共有派生,仍然是公有身份,可直接訪問9.4.2共有派生類對基類的賦值兼容公有派生類對象可以賦值給基類對象公有派生類對象地址可以給基類指針初始化或賦值公有派生類對象可以初始化基類別名9.4.3對一個程序運行結(jié)果的思考對公有派生類中基類成員的操作9.4.4類的賦值兼容規(guī)那么的實質(zhì)第十章 多態(tài)性10.1虛函數(shù)10.1.1虛函數(shù)的聲明virtual 函數(shù)類型 成員函數(shù)名形參表;

42、基類中虛函數(shù)一經(jīng)聲明,所有派生類中的同名成員函數(shù),都為虛函數(shù)。構(gòu)造函數(shù)、靜態(tài)成員函數(shù)和友元函數(shù)都不可聲明為虛基類一般來說,積累成員中有虛函數(shù),那么基類析構(gòu)函數(shù)也應(yīng)聲明為虛函數(shù),聲明后派生路徑上所有派生類的析構(gòu)函數(shù)都為虛函數(shù)。10.1.2虛函數(shù)在實施賦值兼容規(guī)那么中所起的作用當(dāng)基類成員函數(shù)聲明為虛函數(shù)時,在派生過程中可理解為:對于虛函數(shù),所有新增同名成員會對其進行替換對于虛函數(shù)在賦值兼容規(guī)那么中,將會用使用同名派生成員進行賦值10.1.3虛析構(gòu)函數(shù)當(dāng)析構(gòu)函數(shù)定義為虛函數(shù),對于用派生類進行初始化或賦值的基類,在調(diào)用析構(gòu)函數(shù)時,將調(diào)用派生類析構(gòu)函數(shù)10.2純虛函數(shù)和抽象類10.2.1純虛函數(shù)聲明格式

43、:virtual 函數(shù)類型 函數(shù)名參數(shù)表= 0;純虛函數(shù)無函數(shù)體,但派生類中同名函數(shù)必須有函數(shù)體10.2.2抽象類帶有純虛函數(shù)的類不能實例化,不能聲明抽象類的對象。但是可以聲明抽象類指針和抽象類別名10.2.3抽象類實例10.3運算符重載10.3.1運算符重載概念10.3.2運算符重載規(guī)那么不可重載的運算符:三目運算符?:、成員操作.、成員指針操作*、域限定:、求字節(jié)數(shù)sizeof重載的功能應(yīng)與原有功能相似重載后優(yōu)先級和結(jié)核性不變運算符操作數(shù)個數(shù)不變10.3.3運算符重載函數(shù)函數(shù)名:operator 運算符原型聲明:函數(shù)類型 operator 運算符形參表一般用成員函數(shù)和友元函數(shù)實現(xiàn)10.4用

44、成員函數(shù)實現(xiàn)運算符重載10.4.1用成員函數(shù)實現(xiàn)雙目運算符重載做操作數(shù)是對象有操作數(shù)是形參10.4.2用成員函數(shù)實現(xiàn)單目運算符重載一般為無參函數(shù)對于“+“-前置無形參,后置時用一個形參int以示區(qū)別,但并無實際意義做函數(shù)定義時不提供形參名10.5友元函數(shù)實現(xiàn)運算符重載10.5.1用友元函數(shù)實現(xiàn)雙目運算符重載10.5.2用友元函數(shù)實現(xiàn)單目運算符重載10.6提取運算符和插入運算符的重載10.6.1提取運算符和插入運算符對根本數(shù)據(jù)的重載10.6.2用友元函數(shù)實現(xiàn)提取運算符和插入運算符對自定義類型數(shù)據(jù)的重載10.7對象運算中的類型轉(zhuǎn)換10.7.1轉(zhuǎn)換構(gòu)造函數(shù)10.7.2類型轉(zhuǎn)換函數(shù)10.7.3對象運算

45、類型轉(zhuǎn)換第十一章 輸入輸出流類體系11.1根本概念11.1.1流類概念流類:具有一定模式的數(shù)據(jù)流并且都有一個出入端口流:流類的對象流類的屬性:模式和端口流的端口:C+用端口名作為端口數(shù)據(jù),簡稱端口。流的模式:針對流的各種情況采取的各種處置方式的組合。采取枚舉元素作按位與的狀態(tài)字作為模式數(shù)據(jù)。11.1.2緩沖流緩沖區(qū)一般大?。?12字節(jié)11.1.3流類體系11.2根本流類體系11.2.1根本流類體系組成11.2.2根本流類體系各組成局部簡介11.3I/O標(biāo)準(zhǔn)流11.3.1 I/O標(biāo)準(zhǔn)流概念輸入流類對象:cin輸出流類對象:cout、cerr、clog11.3.2 I/O標(biāo)準(zhǔn)流的端口和模式輸出流類

46、對象中cerr為非緩沖流,可做即時輸出;cout輸出端口可重定向;clog很少用。11.3.3常用于輸入的成員函數(shù)int get();只從緩沖區(qū)提取一個字符包括空白,返回值為提取字符的ASCII碼作為返回值,遇到文件結(jié)束符Z,返回系統(tǒng)常量EOF-1cin.get();11.3.4常用于輸出的成員函數(shù)11.3.5用于格式控制的成員函數(shù)11.3.6用于檢驗出錯的成員函數(shù)11.4文件流體系11.4.1文件流類體系組成11.4.2文件流類體系個局部組成簡介11.5 I/O文件流11.5.1 I/O文件流概念11.5.2 I/O文件流的建立,端口和模式確實定11.5.3用于建立和關(guān)閉I/O文件流的成員函

47、數(shù)11.5.4 I/O文本文件流常用的成員函數(shù)11.5.5 I/O二進制文件流常用的成員函數(shù)第十二章 命名空間、模板和異常處理12.1命名空間12.1.1命名空間的定義與使用定義命名空間的三種形式:有名字的命名空間的定義與使用namespace<命名空間名>/各種成員說明在命名空間外訪問訪問成員格式:命名空間名:命名空間成員C+允許將同一個命名空間中的定義和聲明分開在多個文件里給出,或者分成許多段給出。嵌套的命名空間的定義與使用C+允許在一個命名空間中定義另一個命名空間,形成多個層次的作用域。當(dāng)從外部訪問內(nèi)層命名空間中的成員時,需要使用多個作用域運算符無名的命名空間的定義與使用可以

48、在定義命名空間時省略名字無名命名空間中說明的標(biāo)識符,使用時無法加命名空間名限定,只能在本文本的作用域內(nèi)使用,可以取代全局變量的定義:static 類型名 變量名命名空間取別名:namespace 別名 = 命名空間名;嵌套命名空間的內(nèi)層命名空間取別名:namespace 別名 = 外層命名空間:內(nèi)層命名空間12.1.2標(biāo)準(zhǔn)命名空間標(biāo)準(zhǔn)C+庫的所有標(biāo)識符都定義在名為std的命名空間中。在程序中使用標(biāo)準(zhǔn)庫時,需要使用std限定:std:coutC+標(biāo)準(zhǔn)庫分為兩類:沒有使用命名空間,與C兼容,包含文件的拓展名為“.h;使用命名空間std,不與C兼容,包含文件沒有拓展名“.h優(yōu)質(zhì)文本使用與C兼容的標(biāo)準(zhǔn)

49、庫 #include<stdio.h>#include<math.h>#include<string.h>使用命名空間std的新標(biāo)準(zhǔn)庫#include<cstdio>#include<cmath>#include<cstring>using namespace std;優(yōu)質(zhì)文本12.1.3用using引用命名空間從外部直接訪問命名空間中成員的方法:命名空間名+作用域運算符限定using語句的兩種形式:using 命令:using namespace 命名空間名;當(dāng)前作用域可直接引用指定命名空間所有成員,但沒有將成員參加到當(dāng)

50、前作用域using聲明:using 命名空間名:成員;將指定命名空間的指定成員引入到當(dāng)前作用域,可以直接訪問這個成員。當(dāng)前作用域不可聲明同名成員12.2函數(shù)模板12.2.1函數(shù)模板的概念函數(shù)模板的定義:template<class T1,class T2>返回類型 函數(shù)名(參數(shù)表)函數(shù)體T是模板的類型參數(shù),使用關(guān)鍵字class或typename定義類型參數(shù)12.2.2函數(shù)模板的使用隱式:函數(shù)名實參;系統(tǒng)使用函數(shù)模板的步驟:編譯器根據(jù)實參類型,推導(dǎo)出模板實參;編譯器將模板實參傳遞給模板形參,實例化函數(shù)模板,產(chǎn)生模板函數(shù);編譯器將函數(shù)調(diào)用與產(chǎn)生的模板函數(shù)進行鏈接。顯式:函數(shù)名<模

51、板實參表>實參;12.2.3函數(shù)模板的重載與特例對于重載過程中的特殊情況用普通函數(shù)做個別處理在根本模板定義之后,補充模板特例template<>類型名 函數(shù)名<類型名>參數(shù)表前綴template<>表示這是模板特例,<類型名>表示這個特例實在模板參數(shù)是該類型時使用的可省略12.3類模板12.3.1類模板的定義類模板定義的語法形式:template<模板參數(shù)表>class 類名;類模板的成員函數(shù)可在類外定義,假設(shè)果該成員函數(shù)中有模板參數(shù)那么先進行模板聲明,再用類模板名,而不是用類名做限定。12.3.2類模板的使用實例化類模板的語法

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論