C++知識點(整理版)_第1頁
C++知識點(整理版)_第2頁
C++知識點(整理版)_第3頁
C++知識點(整理版)_第4頁
C++知識點(整理版)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上一、C+標(biāo)識符的命名規(guī)則1.所有標(biāo)識符必須由一個字母(az或AZ)或下劃線(_)開頭;2.標(biāo)識符的其它部分可以用字母、下劃線或數(shù)字(09)組成;3.大小寫字母表示不同意義,即代表不同的標(biāo)識符,如前面的cout和Cout;二、如何正確地聲明變量及其初始化2.C+中變量定義的格式:類型名變量名1,變量名2,變量名n;如:intnum1,num2;(2.1)在C+中,每個變量在使用前必須被定義,以便編譯器檢查變量使用的合法性。變量定義只是給變量分配相應(yīng)的空間。(2.2)C+允許在定義變量的同時給變量賦初值。變量未被賦值前,值為未知格式:類型名變量名=初值;或者:類型名變量名

2、(初值);如:intcount=0;或intcount(0);都是定義整型變量count,并為它賦初值0。可以給被定義的變量中的一部分變量賦初值,如:intsum=0,count=0,num;(2.3)一旦定義了一個變量,可以將一個常量賦給該變量。變量賦值過程是“覆蓋”過程,用新值去替換舊值如inta;a=123;或a=0x123;都是正確的(2.4)在C+中,定義變量時沒有賦初值,然后直接引用該變量是危險的!3.數(shù)據(jù)類型(datatype):數(shù)據(jù)的編碼方式、值域和可執(zhí)行的操作。數(shù)據(jù)類型包括兩個方面:數(shù)據(jù)的取值范圍、可用的操作。C/C+中的數(shù)據(jù)類型分為兩大類:基本數(shù)據(jù)類型:整型、浮點型、字符型

3、和布爾型構(gòu)造數(shù)據(jù)類型:字符串、數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉(3.1)整型(int):以補碼形式存儲。基本型int ;長整型long:long/longint(3.1.1)整數(shù)運算時要注意數(shù)據(jù)的表示范圍。如整數(shù)用兩個字節(jié)表示,正整數(shù)32767加1的結(jié)果為-32768。這稱為整數(shù)運算的溢出,系統(tǒng)不檢查這樣的錯誤,程序員必須自己保證程序中不出現(xiàn)這樣的錯誤。(3.1.2)在某些應(yīng)用中,不可能出現(xiàn)負(fù)數(shù),則整型數(shù)中有一半的數(shù)值范圍是被浪費的。因此在C/C+中可以將所有的數(shù)都看成正整數(shù),稱為無符號數(shù)。無符號數(shù)的定義:在各種整數(shù)類型前加上關(guān)鍵詞unsigned,變成unsignedint,unsignedshort

4、,unsignedlong(3.2)實型:以浮點表示,操作類似于整型,浮點數(shù)無法精確表示。(3.2.1)浮點類型的分類: 單精度float ;雙精度double(3.3)字符型(char):存放一個字母或符號,占一個字節(jié),存放的是字符的內(nèi)碼。可執(zhí)行比較、連接等運算。具有雙重屬性:整數(shù)屬性和字符屬性,整數(shù)屬性:字符類型即單字節(jié)的整數(shù)類,字符屬性:數(shù)據(jù)值即為相應(yīng)字符的Ascii碼。字符類型名:char。可分為可打印字符:小寫字母、大寫字母、數(shù)字、標(biāo)點符號、空格等;非打印字符:換行和報警字符或響鈴等控制字符(3.4)布爾型(bool):只有“真”、“假”兩個值。可執(zhí)行判斷運算。如boolflag=t

5、rue;(3.5)字符串(string):是類類型,用雙引號“ ”表示,可執(zhí)行字符串比較,連接應(yīng)用時要加#include如stringstr=“dfhdsf”;三、如何聲明常量4.常量:值的直接表示。如1、3、1.57、“A等,又稱直接量。(4.1)整型常量可用十進制、八進制和十六進制表示:如十進制:123,-234;八進制:0123十六進制:0x123,0x3a2f(4.2)浮點數(shù)常量有兩種表示法:(1)十進制表示:1.23,3.14;(2)科學(xué)計數(shù)法:尾數(shù)e指數(shù)123e2=123002.25e-3=0.00225;注意:尾數(shù)不能為空,指數(shù)必須為整數(shù)(4.3)字符常量:”a,“S,”2等用一

6、對單引號括起來的數(shù)據(jù)。字符串常量用雙引號(4.4)命名常量:為值指定一個描述性的文字,增加程序的可讀性。在C+語言中,用const修飾,如constdoublePI=3.14;見PI即知3.14。注意一般變量名需大寫,如PI。二、算術(shù)運算符號及其運行規(guī)則a) 整數(shù)除整數(shù)b) % 求模運算5.算術(shù)運算符:+(加)-(減)*(乘)/(求商)%(求余)(5.1)“-”可為二元運算符,也可為一元運算符,其余所有的算術(shù)運算符都是二元運算符。(5.2)優(yōu)先級:高*/%,低+-(5.3)整型與整型數(shù)運算,結(jié)果為整型,如5/2=2;整型與浮點數(shù)運算,結(jié)果為浮點數(shù),如5/2.0=2.5;字符與整型數(shù)運算,結(jié)果為

7、整型;字符與浮點數(shù)運算,結(jié)果為浮點數(shù)。浮點數(shù)與浮點數(shù)運算,結(jié)果為浮點數(shù)?!?”運算符:取余,其兩邊都必須是整型數(shù)。6.關(guān)系運算符:,=,=,=,!=(6.1)優(yōu)先級:高于賦值運算符,低于算術(shù)運算符。關(guān)系運算符內(nèi)部:=和!=較低(6.2)關(guān)系表達式:用關(guān)系運算符將二個表達式連接起來稱為關(guān)系表達式。關(guān)系表達式的結(jié)果是true或false?!暗扔凇边\算符是由兩個等號組成。常見的錯誤是在比較相等時用一個等號。=(相等),=(賦值)7.邏輯運算符:&(and)|(or)!(not)(7.1)優(yōu)先級:!高于關(guān)系運算符高于&高于|(7.2)邏輯表達式:由邏輯運算符連接起來的表達式,其結(jié)果為“真(true)”

8、或“假(false)”邏輯表達式在執(zhí)行時,先處理左邊。如左邊已能決定此邏輯表達式的結(jié)果,則右邊不執(zhí)行。因此,在&邏輯表達式中,應(yīng)把false可能性較大的條件放在左邊,在|表達式中,應(yīng)把true可能性較大的條件放在左邊,這樣可以減少程序執(zhí)行的時間8賦值運算符:=的優(yōu)先級比算術(shù)運算符低(8.1)賦值語句:把一個值賦給一個變量。如x=y+z;x=3.14;賦值語句的左邊是變量,右邊是表達式。(8.2)賦值表達式格式:=如x=x+2。作用:將右邊的表達式的值存入左邊的變量,整個表達式的值是右邊的表達式的結(jié)果。賦值運算符是右結(jié)合的(8.3)左值(lvalue):在C+中,能出現(xiàn)在賦值運算符左邊的表達式稱

9、為左值右值(rvalue):賦值運算符右邊的表達式的值(8.4)賦值語句:賦值表達式后面加上分號。(8.5)將賦值表達式作為更大的表達式的一部分。如:a=(x=6)+(y=7)等價于分別將x和y的值設(shè)為6和7,并將6和7相加,結(jié)果存于變量a(8.6)其他運算符與賦值運算符結(jié)合的運算符稱為復(fù)合賦值運算符。格式:變量op=表達式;等價于:變量=變量op表達式;常用的復(fù)合賦值運算符有:+=,=,*=,/=,%=如:balance+=deposit;balance-=surcharge;x/=10;salary*=2;(8.7)賦值和運算時的自動類型轉(zhuǎn)換,在進行賦值操作時,會發(fā)生類型轉(zhuǎn)換,將取范圍小的

10、類型轉(zhuǎn)為取值范圍大的類型是安全的反之是不安全的,如果大類型的值在小類型能容納的范圍之內(nèi),則平安無事強制類型轉(zhuǎn)換:(類型名)(表達式);或類型名(表達式);如z=(double)x/y;靜態(tài)轉(zhuǎn)換(static_cast):用于編譯器隱式執(zhí)行的任何類型轉(zhuǎn)換格式:轉(zhuǎn)換類型(表達式)如z=static_cast(x)/y;1.單個分號組成的語句成為空語句2.用括起來的一組語句稱為復(fù)合語句。在邏輯上看成一個語句。v復(fù)合語句可以放在任何單語句出現(xiàn)的地方。3.在復(fù)合語句中可以定義變量,但必須定義在最前面。4.逗號表達式語句格式:表達式1,表達式2,,表達式nv逗號運算符的優(yōu)先級是所有運算符中最低的如a的初值

11、為0,則表達式a+=1,a+=2,a+=3,a+=4,a+=5的結(jié)果為155.前置+i,-i(先執(zhí)行i+1或i-1,再使用i值)6.后置i+,i-(先使用i值,再執(zhí)行i+1或i-1)If語句c) 形式d) 三種If語句的執(zhí)行流程9.控制語句:改變程序中語句的執(zhí)行次序。(9.1)if語句:兩個分支:條件測試為true時所執(zhí)行的程序塊叫做then子句,條件為false時執(zhí)行的語句叫做else子句。格式(1)if(條件測試)語句;即else語句可省略格式(2)if(條件測試)語句1;else語句2;eg.if(grade=60)cout=60)cout“passed”; elsecout=90)co

12、ut=80)cout=70)cout=60)cout“D”;elsecout”E”;(9.2)條件語句使用注意條件的結(jié)果值應(yīng)該是true或false,它們是C+中bool類型的值 條件可為任意表達式,不一定是關(guān)系表達式。0為false,非0為true。if語句可以沒有else子句。合理的縮排。 if語句的then子句和else子句含有if語句,稱為if語句的嵌套。egif(x100)if(x90)語句1;elseif(x80)語句2;else語句3;else語句4;歧義性:如最后一個else跟哪個if配對.。egif(y!=0) if(x!=0) result=x/y;elsecout“err

13、or:y=0”y?x:y;循環(huán)語句e) 形式f) 三種循環(huán)語句的區(qū)別g) 三種循環(huán)語句的執(zhí)行流程10.循環(huán)語句:一個完整的循環(huán)結(jié)構(gòu)一般由四部分組成:(10.1)For語句:主要用于計數(shù)循環(huán)v格式:for(表達式1;表達式2;表達式3)語句;or語句快;可以理解為:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)符合循環(huán)條件時的執(zhí)行語句v循環(huán)體可以是復(fù)合語句或空語句。v循環(huán)里所有語句的一次完全執(zhí)行稱為一個循環(huán)周期。v執(zhí)行過程:先執(zhí)行表達式1,再執(zhí)行判斷表達式2,如果為true,執(zhí)行一次循環(huán)體(即一個循環(huán)周期),接著執(zhí)行表達式3,然后重新執(zhí)行判斷表達式2,若為true,又執(zhí)行一次循環(huán)體,重復(fù)直至判

14、斷表達式2為false,,最后跳出整個循環(huán)。若開始執(zhí)行條件表示2為false,循環(huán)體一次也不執(zhí)行。vFor循環(huán)的三個表達式可以是任意表達式。三個表達式都是可選的。v如果循環(huán)不需要任何初始化工作,則表達式1可以缺省。如循環(huán)前需要做多個初始化工作,可以將多個初始化工作組合成一個逗號表達式,作為表達式1。如for(int i=0,;i=10;+i);v表達式2也不一定是關(guān)系表達式。它可以是邏輯表達式,甚至可以是算術(shù)表達式。當(dāng)表達式2是算術(shù)表達式時,只要表達式的值為非0,就執(zhí)行循環(huán)體,表達式的值為0時退出循環(huán)。v如果表達式2省略,即不判斷循環(huán)條件,循環(huán)將無終止地進行下去。無終止的循環(huán)稱為“死循環(huán)”,最

15、簡單的死循環(huán)是for(;);(10.2)While語句:與for循環(huán)等價,可相互代替。v格式:while(表達式)語句;or語句塊;v執(zhí)行過程:先計算出條件表達式的值。如果是false,循環(huán)終止;如果是true,整個循環(huán)體將被執(zhí)行,而后又回到while語句的第一行,再次對條件進行檢查,若為true,接著執(zhí)行循環(huán)體,重復(fù)直到條件為false,,跳出整個循環(huán)。v用途:用于循環(huán)次數(shù)不定的循環(huán)。循環(huán)是否結(jié)束取決于某一個變量的值(標(biāo)記控制重復(fù))v在for和while語句之后一般沒有分號,有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體)(10.3)Do-While語句v格式:do語句;or語句塊;while

16、(表達式);v執(zhí)行過程:首先執(zhí)行語句,然后判斷表達式的值。如果表達式為0,繼續(xù)向下執(zhí)行,否則,再次執(zhí)行語句,再次判斷表達式的值v用途:用于至少執(zhí)行一次的循環(huán)。注意后面有分號;11跳轉(zhuǎn)語句:vbreak語句:跳出整個循環(huán)或switch語句。若有多重循環(huán),跳出含break最近的循環(huán)體。vcontinue語句:跳出當(dāng)前本次循環(huán),接著判斷是否執(zhí)行下次循環(huán)周期。12幾種典型的循環(huán)。注意格式及應(yīng)用v輸入驗證循環(huán):以下兩種等價,右邊一個常用cout請輸入半徑:;/提示輸入 docoutradius;area=PI*radius*radiuswhile(radius0);/當(dāng)radius02.while(tr

17、ue)/或while(1)for()coutnum;if(num=-1)break;/if(num=標(biāo)志)跳出;sum+=num;/處理數(shù)據(jù)v查詢循環(huán)累加循環(huán)p=0;charans;/用于用戶響應(yīng)for(inti=1;i=N;i+)coutradius;area=PI*radius*radius累乘循環(huán):p=1coutarea=areaendl;for(inti=1;i=N;i+)coutdoyouagain?ans;/詢問輸入while(ans=Y|ans=y);/詢問循環(huán)v編譯(compiler):將高級語言的程序翻譯成機器語言,分為解釋執(zhí)行,編譯執(zhí)行v連接(link):將目標(biāo)程序與已有的

18、其它目標(biāo)程序連接起來,產(chǎn)生一個可執(zhí)行的程序v輸出流是傳給顯示器的數(shù)據(jù)流,將變量或表達式的內(nèi)容顯示在顯示器上格式輸出一個變量的值:couta;輸出多個變量的值:coutabc;輸出表達式的結(jié)果:cout“Helloworldn”endl上述情況的組合:couta“+”b“=”a+b變量1變量2變量n;如cina;當(dāng)程序執(zhí)行到cin時會停下來等待用戶的輸入,后面一定是變量名,不可加引號用戶可以輸入數(shù)據(jù),用回車()結(jié)束。當(dāng)有多個輸入數(shù)據(jù)時,一般用空白字符(空格、制表符和回車)分隔。如:a為整型,d為double,則對應(yīng)于cinad,用戶的輸入可以為1213.2or12(tab鍵)13.2or1213

19、.2如何定義一個帶默認(rèn)值參數(shù)的函數(shù)如何調(diào)用一個帶默認(rèn)值參數(shù)的函數(shù)h) 參數(shù)使用默認(rèn)值i) 參數(shù)不使用默認(rèn)值函數(shù)v過程單元是程序的基本單位。在過程化的語言中,過程單元就是程序中某個模塊的表示。在面向?qū)ο蟮恼Z言中,過程單元說明對象對各種事件是如何響應(yīng)的。v每個程序都必須有一個名為main的函數(shù),它是程序的入口。主程序由一個或多個函數(shù)組成v程序主體(主函數(shù)main():主要包含如下模塊:(definitioninput-proocess-ouput)(1)變量定義:為程序中的數(shù)據(jù)準(zhǔn)備存儲空間(declarationordefinition)(2)輸入階段:接受所需輸入的信息。它由兩部分組成:顯示提示

20、信息和接收輸入(input)(3)計算階段:完成所需的計算(process)(4)輸出階段:輸出計算的結(jié)果(output)v函數(shù)的主要構(gòu)成:函數(shù)聲明,函數(shù)定義,函數(shù)調(diào)用v可以把函數(shù)想象成數(shù)學(xué)中的函數(shù)。如f(x)=2x參數(shù)表是一組自變量x,返回類型是函數(shù)值的類型;函數(shù)聲明就是設(shè)函數(shù)為f(x),函數(shù)定義(函數(shù)頭+函數(shù)體)就是函數(shù)表達式如2x,函數(shù)調(diào)用就是帶值計算如f(2)=22。v函數(shù)聲明:類似于變量聲明,所有函數(shù)在使用前必須被聲明。又稱函數(shù)的原型,功能:說明函數(shù)和外界的交流,反映函數(shù)調(diào)用的全部信息。包括下列內(nèi)容:函數(shù)名,函數(shù)的參數(shù)類型,函數(shù)的返回類型它的形式為:返回類型函數(shù)名(參數(shù)表);返回類型

21、:是函數(shù)的輸出值的類型,void函數(shù)沒有返回值函數(shù)名:是函數(shù)的名字。程序可以通過函數(shù)名執(zhí)行函數(shù)體的語句參數(shù)表:是函數(shù)的輸入,無參數(shù)列表,可不寫,但是括號必須有。參數(shù)表中的參數(shù)說明之間用“,”分開,每個參數(shù)說明可以是類型,也可以是類型后面再接一個參數(shù)名。如:intmax(int,int);intmax(inta,intb);intmain()v函數(shù)定義:函數(shù)頭+函數(shù)體,相當(dāng)于一個小程序。函數(shù)頭:說明函數(shù)和外界的交流,與函數(shù)聲明一樣,參數(shù)表要有形參,void除外函數(shù)體:一系列獨立的程序步驟;,必須定義在函數(shù)體最前面形式:返回類型函數(shù)名(參數(shù)表)/函數(shù)頭codehere;/函數(shù)體Eg:intmax(

22、inta,intb)/函數(shù)定義if(ab)return(a);elsereturn(b);v函數(shù)調(diào)用形式:函數(shù)名(實際參數(shù)表);一般出現(xiàn)在主調(diào)函數(shù)中或其他調(diào)用函數(shù)中。eg.max(x,y);v函數(shù)執(zhí)行過程:(1)在主程序中計算每個實際參數(shù)值。(2)調(diào)用時將實際參數(shù)的值賦給對應(yīng)的形式參數(shù)。在賦值的過程中完成自動類型轉(zhuǎn)換。(3)進入函數(shù)體依次執(zhí)行函數(shù)體的每個語句,直到遇見return語句或函數(shù)體結(jié)束(4)計算return后面的表達式的值,如果表達式的值與函數(shù)的返回類型不一致,則完成類型的轉(zhuǎn)換。(5)用函數(shù)的返回值置換函數(shù),繼續(xù)主程序的執(zhí)行。Egintmax(inta,intb);/函數(shù)聲明intm

23、ain()intx,y;cinxy;coutb)return(a);elsereturn(b);v注意:(1)形式參數(shù)和實際參數(shù)的個數(shù)(number)、排列次序(order)、類型(type)要完全相同。(2)實際參數(shù)可以是常量、變量、表達式,甚至是另一個函數(shù)調(diào)用(3)傳遞方式:值傳遞,執(zhí)行函數(shù)調(diào)用時,將實參值傳遞給形參,并替換形參同名的實體(4)值傳遞:函數(shù)獲得了主調(diào)程序參數(shù)變量值的拷貝。被調(diào)程序可以改變這些拷貝,但這對主調(diào)程序的環(huán)境沒有影響。(5)請注意:C+中不允許函數(shù)定義嵌套,即在函數(shù)定義中再定義一個函數(shù)是非法的。一個函數(shù)只能定義在別的函數(shù)的外部,函數(shù)定義之間都是平行的,互相獨立的。例

24、如:下面的代碼在主函數(shù)中非法嵌套了一個f()函數(shù)定義:voidmain()voidf()/函數(shù)參數(shù)的傳遞比較:1.按值傳遞以按值傳遞方式進行參數(shù)傳遞的過程為:首先計算出實參表達式的值,接著給對應(yīng)的形參變量分配一個存儲空間,該空間的大小等于該形參類型的長度,然后把已求出的實參表達式的值一一存入到為形參變量分配的存儲空間中,成為形參變量的初值,供被調(diào)用函數(shù)執(zhí)行時使用。這種傳遞是把實參表達式的值傳送給對應(yīng)的形參變量,故稱這種傳遞方式為“按值傳遞”。這種方式被調(diào)用函數(shù)本身不對(主調(diào)函數(shù)中)實參進行操作,也就是說,即使形參的值在函數(shù)中發(fā)生了變化(主調(diào)函數(shù)中)實參的值也完全不會受到影響,仍為調(diào)用前的值。例

25、:按值傳遞。voidswap(int,int);/函數(shù)定義voidmain()inta=3,b=4;couta=a,b=“bendl;swap(a,b);/函數(shù)調(diào)用couta=a,b=bendl;voidswap(intx,inty)/函數(shù)定義intt=x;x=y;y=t;此程序的運行結(jié)果為:a=3,b=4a=3,b=42.地址傳遞如果在函數(shù)定義時將形參的類型說明成指針,對這樣的函數(shù)進行調(diào)用時就需要指定地址值形式的實參。這時的參數(shù)傳遞方式即為地址傳遞方式。這種地址傳遞與上述的按值傳遞不同,它把實參的存儲地址傳送給對應(yīng)的形參,從而使得形參指針和實參指針指向同一個地址。因此,被調(diào)用函數(shù)中對形參指針

26、所指向的地址中內(nèi)容的任何改變都會影響到實參。例:地址傳遞。voidswap(int*x,int*y);/函數(shù)聲明voidmain()inta=3,b=4;couta=a,b=“bendl;swap(&a,&b);、couta=a,b=“bendl;voidswap(int*x,int*y)intt=*x;*x=*y;*y=t;此程序的運行結(jié)果為:a=3,b=4a=4,b=33.引用傳遞按值傳遞方式容易理解,但形參值的改變不能對實參產(chǎn)生影響;地址傳遞方式雖然可以使得形參的改變對相應(yīng)的實參有效,但如果在函數(shù)中反復(fù)利用指針進行間接訪問,會使程序容易產(chǎn)生錯誤且難以閱讀。如果以引用作為參數(shù),則既可以使得

27、對形參的任何操作都能改變相應(yīng)的實參的數(shù)據(jù),又使函數(shù)調(diào)用顯得方便、自然。引用傳遞方式是在函數(shù)定義時在形參前面加上引用運算符“&”。例引用傳遞。voidswap(int&,int&);voidmain()inta=3,b=4;couta=a,b=“bendl;swap(a,b);couta=a,b=“bendl;voidswap(int&x,int&y)intt=x;x=y;y=t;此程序的運行結(jié)果為:a=3,b=4a=4,b=3函數(shù)的嵌套調(diào)用:函數(shù)體由前述可知,C+函數(shù)不能嵌套定義,即一個函數(shù)不能在另一個函數(shù)體中進行定義。但在使用時,允許嵌套調(diào)用,即在調(diào)用一個函數(shù)的過程中又調(diào)用另一個函數(shù)。例如:

28、func1(inta,floatb)floatc;c=func2(b-1,b+1);/嵌套調(diào)用,func1調(diào)用func2intfunc2(floatx,floaty)/函數(shù)體/func1和func2是分別獨立定義的函數(shù),互不從屬。如何定義一個遞歸函數(shù)j) 漢諾塔k) 求最大公約數(shù)l) 計算階乘函數(shù)的遞歸調(diào)用:一個函數(shù)直接或間接地調(diào)用自身,這種現(xiàn)象就是函數(shù)的遞歸調(diào)用。遞歸調(diào)用有兩種方式:直接遞歸調(diào)用和間接遞歸調(diào)用。直接遞歸調(diào)用即在一個函數(shù)中調(diào)用自身,間接遞歸調(diào)用即在一個函數(shù)中調(diào)用了其他函數(shù),而在該其他函數(shù)中又調(diào)用了本函數(shù)。利用函數(shù)的遞歸調(diào)用,可將一個復(fù)雜問題分解為一個相對簡單且可直接求解的子問題

29、(“遞推”階段);然后將這個子問題的結(jié)果逐層進行回代求值,最終求得原來復(fù)雜問題的解(“回歸”階段)。例:求n的階乘。(函數(shù)遞歸調(diào)用的例程。)longf(intn)if(n0)cout“error!“endl;return(-1);elseif(n=1)return(1);elsereturn(n*f(n-1);/自己調(diào)用自己voidmain()longf(intn);intn;coutinputn:n;coutn!=f(n)s2返回值為正數(shù),s1=s1返回值為0,s1s2返回值為負(fù)數(shù)strncmp(s1,s2,n)如strcmp,但至多比較n個字符strchr(s,ch)返回一個指向s中第一次

30、出現(xiàn)ch的地址strrchr(s,ch)返回一個指向s中最后一次出現(xiàn)ch的地址strstr(s1,s2)返回一個指向s1中第一次出現(xiàn)s2的地址如何定義一個函數(shù)q) 函數(shù)返回類型r) 函數(shù)名s) 參數(shù)列表i. 一維數(shù)組作為參數(shù),該如何處理?ii. 二維數(shù)組作為參數(shù),該如何處理?t) return語句數(shù)組作為函數(shù)的參數(shù)小結(jié):v可以將數(shù)組元素傳遞給函數(shù),這時實際參數(shù)用的是數(shù)組元素函數(shù)調(diào)用判斷是否為素數(shù)isprime(ai);函數(shù)定義boolisprime(ai);v也可以將整個數(shù)組傳遞給函數(shù),這時實際參數(shù)用的是數(shù)組名。如函數(shù)調(diào)用sort(a,n);函數(shù)定義sort(inta,intn);v數(shù)組傳遞的

31、實質(zhì)是傳遞地址。把實際參數(shù)中的數(shù)組首地址作為形式參數(shù)中的數(shù)組的首地址vv數(shù)組在函數(shù)中的定義:函數(shù)原型應(yīng)該體現(xiàn)數(shù)組參數(shù)是一個數(shù)組,所以用無數(shù)組大小定義的方括號表示數(shù)組。你可能希望規(guī)定數(shù)組的大小,但在C+語言中并不檢查數(shù)組的界限,所以在函數(shù)中也沒必要知道數(shù)組的大小。數(shù)組大小只在數(shù)組定義中明確(為了申請內(nèi)存量)。v數(shù)組的每一個元素又是數(shù)組的數(shù)組稱為多維數(shù)組v最常用的多維數(shù)組是二維數(shù)組,又稱為矩陣v二維數(shù)組的定義格式:類型說明數(shù)組名常量表達式1常量表達式2v存放次序:按行存放inta45;vvector類模板是一種更加健壯,且有許多附加功能的數(shù)組v附加功能例如:提供下標(biāo)越界檢查;提供數(shù)組用相等運算和大

32、小比較提供數(shù)組間賦值等運算指針u) 利用指針移動(指針加法、減法運算),處理數(shù)組中的不同元素。v) 利用new/delete處理一維動態(tài)數(shù)組指針與引用v指針就是把地址作為數(shù)據(jù),可以把地址存儲在內(nèi)存中v指針變量:存儲地址的變量v變量的指針:當(dāng)一個變量存儲另一個變量的地址時,那我們說它就是那個變量的指針v如何定義一個變量是指針?類型標(biāo)識符*指針變量;如:int*intp;double*doublepv如何把某一變量的地址置入一個指針變量中?因為我們不知道系統(tǒng)分配給變量的真正地址是什么。 用地址運算符“&”解決。如表達式“&x”返回的是變量x的地址。 如:intp=&x; &運算符后面不能跟常量或表

33、達式。如&2是沒有意義的,&(m*n+p)。也是沒有意義的v如何用指針變量處理和改變它所指向的單元的值? 用引用運算符“*”解決。如*intp表示的是intp指向的這個單元的內(nèi)容。 在對intp使用引用運算之前,必須先對intp賦值如有:intX,*intp,Y;X=3;Y=4intp=&X;注意:不能用intp=100;因為我們永遠(yuǎn)不知道變量存儲的真實地址,而且程序每次運行可能都不同。v指針變量可以指向不同的變量。如上例中intp指向x,我們可以通過對intp的重新賦值改變指針的指向。如果想讓intp指向y,只要執(zhí)行intp=&y就可以了。這時,intp與x無任何關(guān)系。v同類的指針變量之間可

34、相互賦值,表示二個指針指向同一內(nèi)存空間。v空指針 指針沒有指向任何空間 空指針用常量NULL表示,NULL的值一般賦為0 不能引用空指針指向的值v指針在使用前必須初始化。v僅和別的變量一樣定義指針,不初始化是一個比較普通的錯誤。v沒有初始化的指針可能指向任意地址,對這些指針作操作可能會導(dǎo)致程序錯誤。vNULL是一個特殊指針值,稱為空指針。它的值為0。它可被用來初始化一個指針,表示不指向任何地址。v指向數(shù)組元素的指針 數(shù)組元素是一個獨立的變量,因此可以有指針指向它。如:p=&a1,p=&ai 數(shù)組元素的地址是通過數(shù)組首地址計算的。如數(shù)組的首地址是1000,則第 i個元素的地址是1000+i*每個數(shù)組元素所占的空間長度v數(shù)組名可以看成是常量指針,對一維數(shù)組來說,數(shù)組名是數(shù)組的起始地址,也就是第0個元素的地址v如執(zhí)行了p=array,則*p與array0是等價的,對該指針可以進行任何有關(guān)數(shù)組下標(biāo)的操作例如:有定義inta10,*p并且執(zhí)行了p=a,那么可用下列語句訪問數(shù)組a的元素for(i=0;i10;+i)coutpi;for(i=0;i10;+i)cout*p+;for(i=0;i10;+i)cout*(p+i);for(i=0;i10;

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論