計(jì)算機(jī)二級C++考點(diǎn)_第1頁
計(jì)算機(jī)二級C++考點(diǎn)_第2頁
計(jì)算機(jī)二級C++考點(diǎn)_第3頁
計(jì)算機(jī)二級C++考點(diǎn)_第4頁
計(jì)算機(jī)二級C++考點(diǎn)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)二級C+考點(diǎn)計(jì)算機(jī)二級C+考點(diǎn):C+語言概述1. 1C+語言的開展C+起源于C語言。1980年貝爾實(shí)驗(yàn)室的BjarneStroustrup和他的同事們開始對C語言進(jìn)行改進(jìn)和擴(kuò)充,把Simula67 (一種早期的面向?qū)ο笳Z言)中類的概念引 入到C語言,并將改進(jìn)后的C語言稱為“帶類的C (Cwithclass) o 1983年夏,“帶類的C”被正式命名為 “C+” ,并于同年7月首次對外發(fā)表。1.2C+語言的特點(diǎn) 1C+是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言(1)抽象數(shù)據(jù)類型。(2)封裝和信息隱藏。(3)以繼承和派生方式實(shí)現(xiàn)程序的重用。(4)以運(yùn)算符重載和虛函數(shù)來實(shí)現(xiàn)多態(tài)性。(5)以模板來實(shí)現(xiàn)類型的參

2、數(shù)化。2C+是程序員和軟件開發(fā)者在實(shí)踐中創(chuàng)造的C+往往從編寫實(shí)際程序的角度出發(fā),為程序員提供了各 種實(shí)用、靈活、高效的語言特性。3C+是C語言的超集中,用戶可以很方便地進(jìn)入調(diào)試狀態(tài),對程序進(jìn)行設(shè)置斷 點(diǎn)、單步執(zhí)行、觀察變量等操作。計(jì)算機(jī)二級C+考點(diǎn):基本控制結(jié)構(gòu)1C+語句C+語句按照不同功能大體分為6種類型,它們是:(1)聲明語句:用于對程序中的各種實(shí)體進(jìn)行聲明、定義 及初始化。(2)表達(dá)式語句:用于對程序中的數(shù)據(jù)進(jìn)行具體操作和處 理。(3)選擇語句:用于實(shí)現(xiàn)程序的選擇結(jié)構(gòu)。(4)循環(huán)語句:用于實(shí)現(xiàn)程序的循環(huán)結(jié)構(gòu)。(5)跳轉(zhuǎn)語句:用于實(shí)現(xiàn)程序執(zhí)行流程的轉(zhuǎn)移。(6)復(fù)合語句:用于表示程序中的語句

3、塊概念。應(yīng)當(dāng)指出的是,C+中并不存在賦值語句和函數(shù)調(diào)用語 句,賦值和函數(shù)調(diào)用都屬于表達(dá)式而不是語句。2順序結(jié)構(gòu)1聲明語句聲明語句又稱為說明語句,它可以用來對程序中出現(xiàn)的 各種名稱進(jìn)行聲明。這些名稱通常是表示變量、常量、函 數(shù)、結(jié)構(gòu)、類、對象等實(shí)體的標(biāo)識符。在C+程序中,一個(gè)名 稱在使用之前必須先被聲明。聲明的目的是告訴編譯器某個(gè) 名稱所指代的實(shí)體類型。使用聲明語句能夠在程序中進(jìn)行如 下操作:(1)變量聲明(2)常量聲明(3)函數(shù)聲明(4)類型聲明聲明語句可以完成的工作不僅局限于為名稱指定類型, 同時(shí)也是定義語句。另外,使用聲明語句還可以在定義變量時(shí)對其進(jìn)行初始 化。2表達(dá)式語句C+中所有對數(shù)據(jù)

4、的操作和處理工作都是通過表達(dá)式語句 來完成的。表達(dá)式語句的語法格式為:V表達(dá)式;賦值操作。復(fù)合賦值操作。增量、減量操作。函數(shù)調(diào)用操作。輸入輸出操作。3基本輸入輸出一個(gè)程序通常會向用戶輸出一些信息,一般也會要求用 戶輸入一些信息。C+程序的輸入輸出操作是通過標(biāo)準(zhǔn)庫中的 輸入/輸出流對象來完成的。在頭文件iostream中定義了代表屏幕的標(biāo)準(zhǔn)輸出流對象cout和代表鍵盤的標(biāo)準(zhǔn)輸入流對象cino cin和cout具有強(qiáng)大的輸入輸出功能和極為靈活的用法。在程序中使用cin和cout之前,應(yīng)首先加入預(yù)處理命令:#include,以包含標(biāo)準(zhǔn)頭文件iostreamo使用cout進(jìn)行數(shù)據(jù)輸出操作的一般格式為:

5、coutV語句2 V語句n )其中,V語句i (i = l, 2,n)可以是聲明語句、表 達(dá)式語句、選擇語句、循環(huán)語句或跳轉(zhuǎn)語句等任何合法的C+ 語句,當(dāng)然,也可以是一個(gè)復(fù)合語句。分隔符“ 和”的作用是把假設(shè)干條語句組成的序列包圍起來,使它們在邏輯上成為一條語句。復(fù)合語句可以出現(xiàn)在程序中任何需 要語句的地方,但在通常情況下復(fù)合語句可以作為以下成分 出現(xiàn)在程序中。(1)函數(shù)的函數(shù)體;(2)循環(huán)語句的循環(huán)體;if語句的分支;switch語句的執(zhí)行局部。實(shí)際上,空語句是一種特殊的表達(dá)式語句。其語法格式 ;即空語句只由一個(gè)分號組成。3選擇結(jié)構(gòu) 1語句 if語句又稱為條件語句,它是程序設(shè)計(jì)語言中最常見的

6、一種選擇語句?;緄f語句基本if語句的功能是根據(jù)給定條件是否成立來決定要不 要執(zhí)行一條語句或語句塊,它的語法格式如下:if(V條件)V語句其中,if為關(guān)鍵字;V條件通常是一個(gè)表達(dá)式且必須用圓括號包圍起來;V語句稱為if子句,它可以是任何類 型的語句(包括復(fù)合語句和空語句)?;緄f語句的執(zhí)行過程是:首先計(jì)算V條件的值,如 果此值不為0 (“真”),那么執(zhí)行語句;如果此值為0(“假”),那么忽略V語句(即不執(zhí)行)而繼續(xù)執(zhí)行if語 句之后的下一條語句。說明:C+中規(guī)定:如果V條件是一個(gè)表達(dá)式,那么當(dāng)此表達(dá) 式的值不為0時(shí),條件結(jié)果為“真”;只有當(dāng)此表達(dá)式的值 為0時(shí),條件結(jié)果才為“假” OV條件

7、也可以是一條聲明語句,其中必須定義一個(gè) 變量并對它進(jìn)行初始化。這時(shí),假設(shè)此變量的值不為0,那么條件 結(jié)果為“真”;假設(shè)此變量的值為0,那么條件結(jié)果為“假”。if ,else 語句ifelse語句是基本if語句的擴(kuò)展,其功能是根據(jù)給定 條件是否成立來決定執(zhí)行兩局部語句中的哪一局部,其語法 格式如下:if(條件)V語句1elseV語句2其中,if和else為關(guān)鍵字;語句1稱為if子句, 語句2稱為else子句,它們可以是單條語句或復(fù)合語 句。ifelse語句的執(zhí)行過程是:首先計(jì)算V條件的值, 如果此值不為0 (“真”),那么執(zhí)行語句1,然后忽略V 語句2而去執(zhí)行if語句之后的下一條語句;如果此值為

8、0 (“假”),那么忽略V語句1,執(zhí)行V語句2,然后繼續(xù) 執(zhí)行if語句之后的下一條語句。if語句的嵌套if子句和else子句可以是任何類型的C+語句,當(dāng)然也 可以是if-else語句本身。通常將這種情況稱為if語句的 嵌套。2switchswitch語句又稱為開關(guān)語句,它也是一種選擇語句。 switch語句的功能是根據(jù)給定表達(dá)式的不同取值來決定從多 個(gè)語句序列中的哪一個(gè)開始執(zhí)行,其語法格式如下:switch(V表達(dá)式)caseV常量表達(dá)式1:V語句序列1caseV常量表達(dá)式2:V語句序列2caseV常量表達(dá)式n:V語句序列ndefault:V語句序列n+l其中,switch, case和def

9、ault為關(guān)鍵字;V表達(dá)式 的值必須屬于整型、字符型或枚舉型。常量表達(dá)式i (i=l, 2n)是取值互不相同的整型常量、字符常量或枚舉常 量,其具體類型應(yīng)與V表達(dá)式的值相一致。語句序列i (i=l, 2-n, n+1)可以是任意多條語句。switch語句的執(zhí)行過程是: (1)首先計(jì)算出V表達(dá)式的值,設(shè)此值為E;(2)然后計(jì)算每個(gè)V常量表達(dá)式i的值,設(shè)它們分別為Cl, C2, Cn;將E依次與Cl, C2, Cn進(jìn)行比擬。如果E與某個(gè)值相等,那么從該值所在的case標(biāo)號語句開始執(zhí)行各個(gè)語句 序列,在不出現(xiàn)跳轉(zhuǎn)語句的情況下,將一直執(zhí)行到switch語(4)如果E與所有值都不相等且存在default

10、標(biāo)號,那么從default標(biāo)號語句起開始向下執(zhí)行,直到switch語句結(jié)束(同樣,在不出現(xiàn)跳轉(zhuǎn)語句的情況下)。(5)如果E與所有值都不相等且不存在default標(biāo)號,那么 switch語句不會執(zhí)行任何操作。說明:(1)多個(gè)case標(biāo)號可以共用一組語句序列,以實(shí)現(xiàn)對于 幾個(gè)常量值都執(zhí)行同一操作。(2)default標(biāo)號語句是可選的。當(dāng)default不出現(xiàn)時(shí), 如果表達(dá)式的值與所有常量表達(dá)式i(i=l, 2n)的 值都不相等,那么程序執(zhí)行流程會跳過switch語句。(3) switch語句是可以嵌套的。case和default標(biāo)號只 與包含它們的最內(nèi)層的switch組合在一起。當(dāng)需要針對表達(dá)式的不

11、同取值范圍進(jìn)行不同處理時(shí),使用ifelseif階梯結(jié)構(gòu)比擬方便。因?yàn)閟witch語句只 能對相等關(guān)系進(jìn)行測試,而if語句卻可以用關(guān)系表達(dá)式對一 個(gè)較大范圍內(nèi)的值進(jìn)行測試。4循環(huán)結(jié)構(gòu) lfor語句 for語句是C+中最常用且功能最強(qiáng)的循環(huán)語句,其語法格式如下:for(V表達(dá)式1; V表達(dá)式2; V表達(dá)式3)V語句其中,for為關(guān)鍵字;V表達(dá)式1是for循環(huán)的初始化 局部,它一般用來設(shè)置循環(huán)控制變量的初始值;V表達(dá)式2 是for循環(huán)的條件局部,它是用來判定循環(huán)是否繼續(xù)進(jìn)行的 條件;V表達(dá)式3是for循環(huán)的增量局部,它一般用于修改 循環(huán)控制變量的值;V語句稱為for循環(huán)的循環(huán)體,它是 要被重復(fù)執(zhí)行的

12、代碼行,for循環(huán)體可以是單條語句,也可以 是由花括號包圍起來的復(fù)合語句。for語句的執(zhí)行過程是:(1)計(jì)算V表達(dá)式1的值;(2)計(jì)算V表達(dá)式2的值,如果此值不等于0 (即循環(huán)條件為“真”),那么轉(zhuǎn)向步驟(3);如果此值等于0 (即循環(huán)條件為“假”),那么轉(zhuǎn)向步驟(5);(3)執(zhí)行一遍循環(huán)體語句: (4)計(jì)算V表達(dá)式3的值,然后轉(zhuǎn)向步驟(2); (5)結(jié)束for循環(huán)。C+中for語句的書寫格式非常靈活,這主要表現(xiàn)為:(DV表達(dá)式1可以是變量聲明語句,即循環(huán)控制變量 可在其中定義。V表達(dá)式1可以省略。這時(shí),應(yīng)在for語句之前給循環(huán)控制變量賦初始值。注意:省略V表達(dá)式1時(shí),其后的分號不能省略。V表

13、達(dá)式2可以省略。這時(shí),for語句將不再判斷循環(huán)條件,循環(huán)會無限次地執(zhí)行下去。這種情況通常稱為“死循環(huán)”。V表達(dá)式3可以省略。這時(shí),應(yīng)在循環(huán)中對循環(huán)控制變量進(jìn)行遞增或遞減操作,以確保循環(huán)能夠正常結(jié)束。三個(gè)表達(dá)式可同時(shí)省略。這時(shí),for語句顯然也是一個(gè)“死循環(huán)”。(6)V表達(dá)式1、V表達(dá)式2和V表達(dá)式3都可以是 任何類型的C+表達(dá)式。2while語句while語句是一種形式較為簡單的循環(huán)語句,其語法格式 如下:、while(V表達(dá)式)V語句其中,while為關(guān)鍵字:V 去達(dá)式是while循環(huán)的條件,它用于控制循環(huán)是否繼續(xù)進(jìn) 行;V語句,稱為while循環(huán)的循環(huán)體,它是要被重復(fù)執(zhí)行 的代碼行;whl

14、e循環(huán)體可以是單條語句,也可以是由花括號 括起來的復(fù)合語句。實(shí)際上,while語句是for語句省略掉表 達(dá)式1和表達(dá)式3的特殊情況。while語句的執(zhí)行過程是:-a(1)計(jì)算V表達(dá)式的值,如果此值不等于0 (即循環(huán)條 件為“真”),那么轉(zhuǎn)向步驟(2);如果此值等于0 (即循環(huán) 條件為“假”),那么轉(zhuǎn)向步驟(4);(2)執(zhí)行一遍循環(huán)體語句;(3)轉(zhuǎn)向步驟(1); (4)結(jié)束while循環(huán)。從中可以看出,while語句將在V表達(dá)式成立的情況下 重復(fù)執(zhí)行V語句;如果在第一次進(jìn)入while循環(huán)時(shí)表達(dá) 式,就不成立,那么V語句一次也不會執(zhí)行。注意:(1)由于while語句中缺少對循環(huán)控制變量進(jìn)行初始化的

15、 結(jié)構(gòu),因此在使用while循環(huán)之前對循環(huán)控制變量進(jìn)行初始 化顯得很重要。(2)在while循環(huán)體中不要忘記對循環(huán)控制變量的值進(jìn)行 修改,以使循環(huán)趨向結(jié)束。能夠很好地兼容C語言正是C+取得成功的原因之一,這 是因?yàn)椋?i)c+繼承了 c語言簡明、高效、靈活等眾多優(yōu)點(diǎn)。(2)以前使用C語言編寫的大批軟件可以不加任何修改,直接在C+開發(fā)環(huán)境下維護(hù)。(3)C語言程序員只需要學(xué)習(xí)C+擴(kuò)充的新特性,就可以 很快地使用C+編寫程序。1.31.3向?qū)ο蟪绦蛟O(shè)計(jì)C+是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它充分支持面向?qū)?象思想中的三個(gè)主要特征是:1封裝性封裝性是指將數(shù)據(jù)和算法捆綁成一個(gè)整體,這個(gè)整體就 是對象,描述對

16、象的數(shù)據(jù)被封裝在其內(nèi)部。如果需要存取數(shù) 據(jù),可以通過對象提供的算法來進(jìn)行操作,而無需知道對象 內(nèi)部的數(shù)據(jù)是如何表示和存儲的。這種思想被稱為信息隱 藏。2繼承性繼承性是指一種事物保存了另一種事物的全部特征,并 且具有自身的獨(dú)有特征。C+語言采用繼承來支持重用,程序可以在現(xiàn)有類型的基 礎(chǔ)上擴(kuò)展功能來定義新類型。新類型是從現(xiàn)有類型中派生出 來的,因此被稱為派生類。3多態(tài)性3dowhile語句;dowhile語句也是一種循環(huán)語句,它 的功能類似于while語句,只是將循環(huán)的判定條件移到了循 環(huán)體之后,其語法格式如下:doV語句while (V表達(dá)式);其中,do和while為關(guān)鍵字;V語句稱為dowh

17、ile 循環(huán)的循環(huán)體,它是要被重復(fù)執(zhí)行的代碼行,dowhile循 環(huán)體可以是單條語句,也可以是由花括號包圍起來的復(fù)合語 句;V表達(dá)式是(10while循環(huán)的條件,它用于控制循 環(huán)是否繼續(xù)進(jìn)行。注意:在dowhile語句中最后的分號不能丟掉,它用 來表示dowhile語句的結(jié)束。dowhile語句的執(zhí)行過程是: (1)執(zhí)行一遍循環(huán)體V語句;(2)計(jì)算表達(dá)式的值,如果此值不等于0 (即循環(huán)條 件為“真”),那么轉(zhuǎn)向步驟(1);如果此值等于0 (即循環(huán) 條件為“假”),那么轉(zhuǎn)向步驟(3);(3)結(jié)束dowhile循環(huán)。注意:(1)在使用dowhile循環(huán)之前同樣需要對循環(huán)控制變量 進(jìn)行初始化;在do

18、-while循環(huán)中仍然不要忘記對循環(huán)控制 變量進(jìn)行修改,以使循環(huán)趨向結(jié)束,防止死循環(huán)的發(fā)生。(2)dowhile循環(huán)與while循環(huán)的不同之處在于: dowhile循環(huán)的循環(huán)體在前,循環(huán)條件在后,因此 dowhile循環(huán)體在任何條件下(即使不滿足循環(huán)條件)都至 少被執(zhí)行一次。而while循環(huán)條件在前,循環(huán)體在后,當(dāng)條件不滿足時(shí),循環(huán)體有可能一次也不會執(zhí)行。這一點(diǎn)正是在 構(gòu)造循環(huán)結(jié)構(gòu)時(shí)決定使用while語句還是dowhile語句的 重要依據(jù)。循環(huán)的嵌套在一個(gè)循環(huán)結(jié)構(gòu)中又完整地包含著另一個(gè)循環(huán)結(jié)構(gòu)稱為 循環(huán)的嵌套。C+中三種類型的循環(huán)語句都可以相互嵌套,并 且嵌套的層數(shù)沒有限制。程序設(shè)計(jì)中有許多問

19、題需要使用循 環(huán)結(jié)構(gòu)的嵌套來解決。5跳轉(zhuǎn)語句C+中有4種跳轉(zhuǎn)語句,它們是:break語句、continue 語句、return語句和goto語句。lbreak語句break語句又稱為跳出語句,其語法格式如下:break;即由關(guān)鍵字break加上一個(gè)分號構(gòu)成。break語句只能用在switch語句和循環(huán)語句中。在 switch語句中,break用來使執(zhí)行流程跳出switch語句,而 繼續(xù)執(zhí)行switch后面的語句。在循環(huán)語句中,break用來使 執(zhí)行流程無條件地跳出本層循環(huán)體。另外,break語句還經(jīng)常用于使執(zhí)行流程跳出死循環(huán)。2continue 語句continue語句又稱為繼續(xù)語句,其語法格

20、式如下:continue;即由關(guān)鍵字continue加上一個(gè)分號構(gòu)成。continue語句僅用在循環(huán)語句中,它的功能是:結(jié)束本 次循環(huán),即跳過循環(huán)中尚未執(zhí)行的語句,接著進(jìn)行下一次是 否執(zhí)行循環(huán)的條件判定。在while和dowhile循環(huán)中,continue語句將使執(zhí)行流程直接跳轉(zhuǎn)到循環(huán)條件的判定局部,然后決定循環(huán)是否繼 續(xù)進(jìn)行。在for循環(huán)中,當(dāng)遇到continue時(shí),執(zhí)行流程將跳 過循環(huán)中余下的語句,而轉(zhuǎn)去執(zhí)行for語句中的V表達(dá)式3 ,然后根據(jù)V表達(dá)式2進(jìn)行循環(huán)條件的判定以決定是否繼 續(xù)執(zhí)行for循環(huán)體。3return 語句return語句又稱為返回語句,它具有兩種語法格式: (1)ret

21、urn;(2) return V 表達(dá)式 ;其中,return為關(guān)鍵字,第2種格式中的V表達(dá)式可 以是任何類型的C+表達(dá)式。return語句只能用在函數(shù)體中。在返回類型為void的函 數(shù)體中,假設(shè)想跳出函數(shù)體,將執(zhí)行流程轉(zhuǎn)移到調(diào)用該函數(shù)的 位置,應(yīng)使用return語句的第1種格式。在返回類型不是 void的函數(shù)體中,應(yīng)使用return語句的第2種格式,使執(zhí)行 流程轉(zhuǎn)移到調(diào)用該函數(shù)的位置,并將表達(dá)式的值作為函 數(shù)的返回值。對于非void返回類型的函數(shù)來說,其函數(shù)體中必須至少 具有一條return語句。4goto語句goto語句又稱為轉(zhuǎn)向語句,其語法格式如下:gotoV 標(biāo)號;其中,goto為關(guān)鍵

22、字;其中,goto為關(guān)鍵字;V標(biāo)號是一個(gè)由用戶命名的標(biāo)識符。在goto語句所處的函數(shù)體中必須同時(shí)存在一條由標(biāo) 號標(biāo)記的語句,其格式為:標(biāo)號:V語句 即在標(biāo)號和語句之間使用一個(gè)冒號分隔,這種語法結(jié)構(gòu)稱為標(biāo)號語句。標(biāo)號語句中的V標(biāo)號應(yīng)與goto語 句中的V標(biāo)號相同,V語句可以是任何類型的C+語句。注意:某個(gè)goto語句和相應(yīng)的標(biāo)號語句必須位于同一函數(shù)體內(nèi)。goto語句的功能是使執(zhí)行流程跳轉(zhuǎn)到v標(biāo)號所標(biāo)記的 V語句處(即對應(yīng)的標(biāo)號語句處)。計(jì)算機(jī)二級C+函數(shù)考點(diǎn)1函數(shù)定義在標(biāo)準(zhǔn)C+中,函數(shù)的定義形式為:返回類型 函數(shù)名(V形參列表)V函數(shù)體)V函數(shù)名 一般是標(biāo)識符,一個(gè)程序只有一個(gè)main函 數(shù),其

23、他函數(shù)名可隨意?。ó?dāng)然,必須防止使用C+的關(guān)鍵 字),好的程序設(shè)計(jì)風(fēng)格要求函數(shù)名最好是取有助于記憶的名 字,如getchar函數(shù),通過函數(shù)的名字可以知道函數(shù)的功 能,這無疑會增加程序的可讀性。形參列表是由逗號分隔的,分別說明函數(shù)的各個(gè)參 數(shù)。形參將在函數(shù)被調(diào)用時(shí)從調(diào)用函數(shù)那里獲得數(shù)據(jù)。在C+ 中,函數(shù)形參列表可以為空,即一個(gè)函數(shù)可以沒有參數(shù)。但 即使函數(shù)形參列表為空,括起函數(shù)參數(shù)的一對圓括號也不允V返回類型又稱函數(shù)類型,表示一個(gè)函數(shù)所計(jì)算(或運(yùn) 行)的結(jié)果值的類型。如果一個(gè)函數(shù)沒有結(jié)果值,如函數(shù)僅用 來更新(或設(shè)置)變量值、顯示信息等,那么該函數(shù)返回類型為 void類型。一個(gè)沒有返回值的函數(shù)類

24、似于一些程序語言(如 pascal 語言)中的過程(procedure)。由一對花括號括起來的V函數(shù)體是語句的序列,它定 義了函數(shù)應(yīng)執(zhí)行的具體操作。需要注意的是,C+不允許函數(shù)定義嵌套,即在一個(gè)函數(shù) 體內(nèi)不能包含有其他函數(shù)的定義。2函數(shù)調(diào)用C+中函數(shù)調(diào)用的一般形式為:V函數(shù)名(V實(shí)參表)當(dāng)調(diào)用一個(gè)函數(shù)時(shí),其實(shí)參的個(gè)數(shù)、類型及排列次序必 須與函數(shù)定義時(shí)的形參相一致,也就是說實(shí)參與形參應(yīng)該一 對一地匹配。當(dāng)函數(shù)定義時(shí)沒有形參,那么函數(shù)調(diào)用時(shí),實(shí) 參表亦為空。依據(jù)對函數(shù)返回值的使用方式,函數(shù)的調(diào)用方法可分為 以下幾種:(1)語句調(diào)用,這通常用于不帶返回值的函數(shù)。這種情況 下,被調(diào)用函數(shù)作為一個(gè)獨(dú)立的

25、語句出現(xiàn)在程序中。(2)表達(dá)式調(diào)用。將被調(diào)用函數(shù)作為表達(dá)式的一局部來進(jìn) 行調(diào)用。它適用于被調(diào)用函數(shù)帶有返回值的情況。(3)參數(shù)調(diào)用。被調(diào)用函數(shù)作為另一個(gè)函數(shù)的一個(gè)參數(shù)進(jìn) 行調(diào)用。3函數(shù)原型在C+中,函數(shù)在使用之前要預(yù)先聲明。這種聲明在標(biāo)準(zhǔn) C+中稱為函數(shù)原型(functionprototype),函數(shù)原型給出了 函數(shù)名、返回類型以及在調(diào)用函數(shù)時(shí)必須提供的參數(shù)的個(gè)數(shù) 和類型。函數(shù)原型的語法為:返回類型函數(shù)名(形參列表);(注意在函數(shù)原型后要有分號) 實(shí)際上函數(shù)原型說明有兩種形式:(1)直接使用函數(shù)定義的頭部,并在后面加上一個(gè)分號。(2)在函數(shù)原型說明中省略參數(shù)列表中的形參變量名,僅 給出函數(shù)名、

26、函數(shù)類型、參數(shù)個(gè)數(shù)及次序。注意:在C+中,在調(diào)用任何函數(shù)之前,必須確保它已有 原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得 該文件中所有函數(shù)都能調(diào)用它們。實(shí)際上,標(biāo)準(zhǔn)函數(shù)的原型 說明放在了相應(yīng)的頭文件中,這也是為什么在調(diào)用標(biāo)準(zhǔn)函數(shù) 時(shí)必須要包含相應(yīng)的頭文件的原因之一。在了解了函數(shù)定義、函數(shù)調(diào)用和函數(shù)原型之后,就可以 寫出一個(gè)完整的C+程序,并可將其編譯和運(yùn)行。4函數(shù)返回類型根據(jù)函數(shù)是否帶有參數(shù)以及函數(shù)是否有返回值,可以將1帶參數(shù)的有返回值函數(shù)定義形式為:返回類型函數(shù)名(V參數(shù)列表)V語句序列2不帶參數(shù)的有返回值函數(shù)定義形式為:V返回類型 函數(shù)名()(V語句序列)3帶參數(shù)的無返回值函數(shù)定

27、義形式為:void函數(shù)名(V參數(shù)列表)語句序列)4不帶參數(shù)的無返回值函數(shù)定義形式為:voidV函數(shù)名()V語句序列5函數(shù)參數(shù)C+中,函數(shù)之間傳遞參數(shù)有傳值和傳地址兩種傳遞方 式。此外,C+還提供了默認(rèn)參數(shù)機(jī)制,可以簡化復(fù)雜函數(shù)的 調(diào)用。1參數(shù)的傳遞方式(1)傳值傳值是將實(shí)參值的副本傳遞(拷貝)給被調(diào)用函數(shù)的形 參。它是C+的默認(rèn)參數(shù)傳遞方式,在此之前的多數(shù)函數(shù)參數(shù) 傳遞都是傳值。由于傳值方式是將實(shí)參的值復(fù)制到形參中,因此實(shí)參和 形參是兩個(gè)不同的變量,有各自的存儲空間,可以把函數(shù)形 參看作是函數(shù)的局部變量。傳值的最大好處是函數(shù)調(diào)用不會 改變調(diào)用函數(shù)實(shí)參變量的內(nèi)容,可防止不必要的副作用。(2)傳地

28、址有時(shí)我們確實(shí)需要通過函數(shù)調(diào)用來改變實(shí)參變量的、值, 或通過函數(shù)調(diào)用返回多個(gè)值(return語句只能返回一個(gè)值), 這時(shí)僅靠傳值方式是不能到達(dá)目的。2默認(rèn)參數(shù)在C+中,可以為參數(shù)指定默認(rèn)值,在函數(shù)調(diào)用時(shí)沒有指 定與形參相對應(yīng)的實(shí)參時(shí)就自動使用默認(rèn)值。默認(rèn)參數(shù)可以 簡化復(fù)雜函數(shù)的調(diào)用。默認(rèn)參數(shù)通常在函數(shù)名第一次出現(xiàn)在程序中的時(shí)候,如 在函數(shù)原型中,指定默認(rèn)參數(shù)值。指定默認(rèn)參數(shù)的方式從語 法上看與變量初始化相似。6函數(shù)重載如果能用同一個(gè)函數(shù)名字在不同類型上做相類似的操作 就會方便很多,這種情況即為函數(shù)重載。其實(shí)這一技術(shù)早已 用于C+的基本運(yùn)算符。例如加法操作只有一個(gè)運(yùn)算符+,但 它卻可以用來做整型

29、數(shù)、浮點(diǎn)數(shù)和指針的加法運(yùn)算。將這一 思想推廣到函數(shù),即為函數(shù)重載。7內(nèi)聯(lián)函數(shù)C+引入內(nèi)聯(lián)(inline)函數(shù)的原因是用它來取代C中的預(yù) 處理宏函數(shù)。內(nèi)聯(lián)函數(shù)和宏函數(shù)的區(qū)別在于,宏函數(shù)是由預(yù) 處理器對宏進(jìn)行替換,而內(nèi)聯(lián)函數(shù)是通過編譯器來實(shí)現(xiàn)的, 因此內(nèi)聯(lián)函數(shù)是真正的函數(shù),只是在調(diào)用的時(shí)候,內(nèi)聯(lián)函數(shù) 像宏函數(shù)一樣的展開,所以它沒有一般函數(shù)的參數(shù)壓棧和退 棧操作,減少了調(diào)用開銷,因此,內(nèi)聯(lián)函數(shù)比普通函數(shù)有更 高的執(zhí)行效率。在C+中使用inline關(guān)鍵字來定義內(nèi)聯(lián)函數(shù)。inline關(guān)鍵字放在函數(shù)定義中函數(shù)類型之前。不過,編譯器會將在類 的說明局部定義的任何函數(shù)都認(rèn)定為內(nèi)聯(lián)函數(shù),即使它們沒 有用inli

30、ne說明。8遞歸函數(shù)如果一個(gè)函數(shù)在其函數(shù)體內(nèi)直接或間接地調(diào)用了自己,該函數(shù)就稱為遞歸函數(shù)。遞歸是解決某些復(fù)雜問題的十分有 效的方法。遞歸適用以下的一般場合。(1)數(shù)據(jù)的定義形式按遞歸定義。(2)數(shù)據(jù)之間的關(guān)系(即數(shù)據(jù)結(jié)構(gòu))按遞歸定義,如樹的遍 歷,圖的搜索等。(3)問題解法按遞歸算法實(shí)現(xiàn),例如回溯法等。使用遞歸需要注意以下幾點(diǎn):(1)用遞歸編寫代碼往往較為簡潔,但要犧牲一定的效 率。因?yàn)橄到y(tǒng)處理遞歸函數(shù)時(shí)都是通過壓棧/退棧的方式實(shí)現(xiàn) 的。(2)無論哪種遞歸調(diào)用,都必須有遞歸出口,即結(jié)束遞歸 調(diào)用的條件。(3)編寫遞歸函數(shù)時(shí)需要進(jìn)行遞歸分析,既要保證正確使用了遞歸語句,還要保證完成了相應(yīng)的操作。

31、9變量作用域與生存周期1C+中變量的存儲類型分為如下幾種類型:auto函數(shù)內(nèi)部的局部變量(aut。可省略不寫)。多態(tài)性是指當(dāng)多種事物繼承自一種事物時(shí),同一種操作 在它們之間表現(xiàn)出不同的行為。C+語言中使用函數(shù)重載、模板、虛函數(shù)等概念來支持多態(tài)性。C+語言主要包括面向過程和面向?qū)ο髢删植績?nèi)容。學(xué)習(xí) C+語言時(shí),應(yīng)該先學(xué)習(xí)其面向過程局部,再學(xué)習(xí)面向?qū)ο蟛?分。1.4C+語言的基本符號C+語言中的基本符號可以分為3類:1字母。包括大寫英文字母和小寫英文字母共52個(gè)符 號。2數(shù)字3特殊符號。包括:+ -*/=, _: ; ?= =| ! #%&() 口 - V 和“空格”共30個(gè)符號。這三類符號共計(jì)9

32、2個(gè),它們組成了 C+語言的基本符號 集合。5C+語言的詞匯 1關(guān)鍵字碧字也稱為保存字,它是由C+語言本身預(yù)先定義好的 一類隼詞。表1ANSIC標(biāo)準(zhǔn)規(guī)定的關(guān)鍵字autobreakcasecharstatic靜態(tài)存儲分配,又分為內(nèi)部和外部靜態(tài)。extern全局變量(用于外部變量說明)。register變量存儲在硬件寄存器中。(1)自動變量在函數(shù)內(nèi)部定義的局部變量即為自動變量,用于說明 自動變量的關(guān)鍵字auto可以省略。在函數(shù)頭部定義的自動變量作用域?yàn)槎x它的函數(shù); 而在塊語句中定義的自動變量作用域?yàn)樗趬K。與C不同, C+還允許在變量使用之前才定義變量。編譯程序不給自動變量賦予隱含的初值,故其初

33、值不 確定。因此,每次使用自動變量前,必須明確地賦初值。形參可以看成是函數(shù)的自動變量,作用域僅限于相應(yīng) 函數(shù)內(nèi)。自動變量所使用的存儲空間由程序自動地創(chuàng)立和釋 放。當(dāng)函數(shù)調(diào)用時(shí)為自動變量創(chuàng)立存儲空間,函數(shù)調(diào)用結(jié)束 時(shí)將自動釋放為其創(chuàng)立的存儲空間。因此,自動變量隨函數(shù) 的調(diào)用而存在并隨函數(shù)調(diào)用結(jié)束而消失,由一次調(diào)用到下一 次調(diào)用之間不保存值。(2)外部變量在函數(shù)外部定義的變量即為外部變量。外部變量的作用域是整個(gè)程序(全局變量)o在C+中,程序可以分別放在幾個(gè)源文件上,每個(gè)文件 可作為一個(gè)編譯單位分別編譯。外部變量只需在某個(gè)文件上定義一次,其他文件假設(shè)要引用此變量時(shí),應(yīng)用extern加以說 明。(外

34、部變量定義時(shí)不必加extern關(guān)鍵字)。在同一文件中,假設(shè)前面的函數(shù)要引用在其后面定義的 外部(在函數(shù)之外)變量時(shí),也應(yīng)用extern加以說明。外部變量是由編譯程序在編譯時(shí)給其分配空間,屬于 靜態(tài)分配變量,對于數(shù)值型(整型、浮點(diǎn)型和字符型)外部變 量來說,其有隱含初值0。引進(jìn)外部變量的原因:其一是只要程序運(yùn)行外部變量的 值是始終存在的;其二是外部變量可以在所有函數(shù)間共享。在C+中,可以使用外部變量,但是,必須要清楚使用外 部變量的副作用。使用外部變量的函數(shù)獨(dú)立性差,通常不能 被移植到其他程序中,而且,如果多個(gè)函數(shù)都使用到某個(gè)外 部變量,一旦出現(xiàn)問題,就很難發(fā)現(xiàn)問題是由哪個(gè)函數(shù)引起 的。在C+中

35、,盡量不用或少用外部變量,可使用參數(shù)在函數(shù) 間進(jìn)行數(shù)據(jù)的傳遞。constcontinuedefaultdodoub1eelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionuns i gnedvo i dvo1at i1ewhile表2ANSIC+標(biāo)準(zhǔn)補(bǔ)充的關(guān)鍵字boolcatchclassconst_castdynamic_castexplicitfalsefriendinlinemutablenamespacenewoperatorprivateprot

36、ectedpublicreinterpret_casestatic_casttemplatethisthrowtruetrytypeidtypenameusingvirtualwchar_t2標(biāo)識符標(biāo)識符是用戶為程序中各種需要命名的“元素”所起的 名字。標(biāo)識符的組成要符合一定的規(guī)那么:(1)標(biāo)識符是一個(gè)以字母或下劃線開頭的,由字母、數(shù) 字、下劃線組成的字符串。.(2)標(biāo)識符不能與任意一個(gè)關(guān)鍵字同名。(3)標(biāo)識符中的字母區(qū)分大小寫。(4)標(biāo)識符不宜過長。C+語言一般設(shè)定一個(gè)標(biāo)識符的有 效長度為32個(gè)字符。3字面常量常量是指在程序中固定不變的值。常量一般有兩種表示形式,即符號常量和字面常量。C+語

37、言中符號常量的名字就 是一個(gè)標(biāo)識符,而字面常量卻是一類特殊的單詞。字面常量 分為整型、浮點(diǎn)型、字符型和字符串型四類。4運(yùn)算符運(yùn)算符是對程序中的數(shù)據(jù)進(jìn)行操作的一類單詞。C+語言 中運(yùn)算符的種類非常豐富,其中有:(1)單字符組成的運(yùn)算符。(2)雙字符組成的運(yùn)算符。(3)三個(gè)字符組成的運(yùn)算符。(4)關(guān)鍵字運(yùn)算符。5標(biāo)點(diǎn)符號標(biāo)點(diǎn)符號是在程序中起分割內(nèi)容和界定范圍作用的一類單詞。表3C+語言的標(biāo)點(diǎn)符號標(biāo)點(diǎn)符號描述(空格)語句中各成分之間的分割符;(分號)語句的結(jié)束符(單引號)字符常量的起止標(biāo)記符 (雙引號)字符串常量的起止標(biāo)記符 # (井字號)預(yù)處理命令的開始標(biāo)記符(左花括號)復(fù)合語句的開始標(biāo)記符(右花

38、括號)復(fù)合語句的結(jié)束標(biāo)記符 / (雙斜杠)行注釋的開始標(biāo)記符 /*(斜杠和星號)塊注釋的開始標(biāo)記符 */(星號和斜杠)塊注釋的結(jié)束標(biāo)記符1.6C+程序的基本框架由于C+語言既支持結(jié)構(gòu)化程序設(shè)計(jì),又支持面向?qū)ο蟪绦蛟O(shè)計(jì),所以它同時(shí)具有結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè) 計(jì)兩種基本框架。1結(jié)構(gòu)化程序設(shè)計(jì)框架在C+的結(jié)構(gòu)化程序設(shè)計(jì)框架中,函數(shù)是程序的基本組成 單元。程序的主體通常由假設(shè)干函數(shù)定義構(gòu)成。函數(shù)是程序中完成一定功能的模塊。各個(gè)函數(shù)之間通過 參數(shù)、返回值和全局變量來進(jìn)行數(shù)據(jù)通信。當(dāng)編寫一個(gè)較大的程序時(shí),可以把它按照功能逐級劃分 成許多相對獨(dú)立的小模塊。每個(gè)小模塊的功能由一個(gè)函數(shù)實(shí) 現(xiàn),再通過適當(dāng)?shù)姆椒▽⑦@些函數(shù)組織在一起協(xié)同工作,就 能夠完成整個(gè)程序所規(guī)定的任務(wù)。這種方法表達(dá)出了

溫馨提示

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

評論

0/150

提交評論