C++程序設(shè)計(jì)基礎(chǔ)第1章C++語(yǔ)言概述_第1頁(yè)
C++程序設(shè)計(jì)基礎(chǔ)第1章C++語(yǔ)言概述_第2頁(yè)
C++程序設(shè)計(jì)基礎(chǔ)第1章C++語(yǔ)言概述_第3頁(yè)
C++程序設(shè)計(jì)基礎(chǔ)第1章C++語(yǔ)言概述_第4頁(yè)
C++程序設(shè)計(jì)基礎(chǔ)第1章C++語(yǔ)言概述_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.,1,程序設(shè)計(jì)基礎(chǔ)-面向?qū)ο蠹癈+實(shí)現(xiàn),北華航天工業(yè)學(xué)院,.,2,第一章 C+語(yǔ)言概述,.,3,目標(biāo),理解程序設(shè)計(jì)的概念 掌握C+程序的開(kāi)發(fā)過(guò)程 掌握C+的運(yùn)算符和表達(dá)式 掌握C+的數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和構(gòu)造數(shù)據(jù)類型 熟練掌握基本控制語(yǔ)句的使用:if、switch、while、dowhile、for 掌握轉(zhuǎn)向語(yǔ)句:break、contiune語(yǔ)句的使用 熟練掌握函數(shù)的使用,.,4,1.1 面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén),1.1.1 程序設(shè)計(jì)與程序設(shè)計(jì)語(yǔ)言 1.1.2 簡(jiǎn)單的C+程序 1.1.3 創(chuàng)建和運(yùn)行C+程序 1.1.4 VC+集成開(kāi)發(fā)環(huán)境,.,5,1.1.1 程序設(shè)計(jì)與程序設(shè)計(jì)語(yǔ)言,程序設(shè)

2、計(jì)也是一門(mén)工程設(shè)計(jì),它是根據(jù)要解決的問(wèn)題,使用某種程序設(shè)計(jì)語(yǔ)言,設(shè)計(jì)出能夠完成這一任務(wù)的計(jì)算機(jī)指令序列。 程序設(shè)計(jì)語(yǔ)言是人與計(jì)算機(jī)進(jìn)行交流的一種形式語(yǔ)言,是人利用計(jì)算機(jī)分析文問(wèn)題、解決問(wèn)題的一個(gè)基本工具。,.,6,1.1.2 簡(jiǎn)單的C+程序,/* 源文件名:Ch1_01.cpp 功能:給出矩形的寬和高,計(jì)算矩形的周長(zhǎng)和面積,使用結(jié)構(gòu)化方法實(shí)現(xiàn) */ # include void main() int width,height,girth,area; cout widthheight;/輸入兩個(gè)數(shù)據(jù) girth= (width+height)*2; /計(jì)算矩形周長(zhǎng) area= width*hei

3、ght; /計(jì)算矩形面積 cout矩形:寬= width 高= heightendl; /輸出數(shù)據(jù) cout周長(zhǎng)= girthendl; cout面積=areaendl; ,.,7,1.1.2 簡(jiǎn)單的C+程序,程序運(yùn)行后,屏幕顯示: 請(qǐng)輸入矩形的寬和高:20 15 (用戶輸入) 矩形:寬=20 高=15 周長(zhǎng)=70 面積=300,.,8,1.1.2 簡(jiǎn)單的C+程序,程序結(jié)構(gòu)分析: (1)“/*/” 是程序的注釋部分,注釋內(nèi)容是為增加程序的可讀性,系統(tǒng)不編譯注釋內(nèi)容,自動(dòng)忽略從“/*”到“*/”之間的內(nèi)容。 C+中以“/”開(kāi)頭直到本行結(jié)束的部分也是注釋。與“/*/”的區(qū)別在于只能注釋一行,不能跨

4、行,這種注釋也稱為行注釋,“/*/”注釋可以跨行,稱為塊注釋。,.,9,1.1.2 簡(jiǎn)單的C+程序,(2)#include 是一條編譯預(yù)處理命令,聲明該程序要使用iostream.h文件中的內(nèi)容,iostream.h文件中包含了輸入cin和輸出cout 的定義。編譯時(shí)系統(tǒng)將頭文件iostream.h中的內(nèi)容嵌入到程序中該命令位置。,.,10,1.1.2 簡(jiǎn)單的C+程序,(3)程序中定義了一個(gè)主函數(shù)main(),其中main是函數(shù)名,void表示該函數(shù)返回值類型。程序執(zhí)行從主函數(shù)開(kāi)始。 (4)函數(shù)體中聲明變量的語(yǔ)句是: “int width,height,girth,area;” ,通知系統(tǒng)為變

5、量分配存儲(chǔ)空間。 (5)函數(shù)體中的其他語(yǔ)句用于完成相應(yīng)功能,是函數(shù)體的重要組成部分。,.,11,1.1.2 簡(jiǎn)單的C+程序,書(shū)寫(xiě)格式,盡量遵循以下基本原則: (1)一般情況下一行只寫(xiě)一條語(yǔ)句。短語(yǔ)句可以一行寫(xiě)多條,長(zhǎng)語(yǔ)句可以分成多行來(lái)寫(xiě)。分行原則是不能將一個(gè)單詞分開(kāi),用雙引號(hào)括起來(lái)的字符串最好也不要分開(kāi)。 (2)C+程序書(shū)寫(xiě)時(shí)要盡量提高可讀性。為此,采用適當(dāng)?shù)乜s進(jìn)格式書(shū)寫(xiě)程序是非常必要的,表示同一類內(nèi)容或同一層次的語(yǔ)句要對(duì)齊。 (3)C+程序中大括號(hào)使用較多,其書(shū)寫(xiě)方法也較多,建議用戶要養(yǎng)成使用大括號(hào)的固定風(fēng)格。,.,12,1.1.3 創(chuàng)建和運(yùn)行C+程序,C+源程序要經(jīng)過(guò)編輯、編譯、連接、運(yùn)行

6、4個(gè)環(huán)節(jié),才能產(chǎn)生輸出結(jié)果。,.,13,1.1.3 創(chuàng)建和運(yùn)行C+程序,1. 編輯 編輯是在一定的環(huán)境下進(jìn)行程序的輸入和修改過(guò)程。 2. 編譯 編輯好的源程序不能被計(jì)算機(jī)理解,源程序必須經(jīng)過(guò)編譯,生成計(jì)算機(jī)能夠識(shí)別的機(jī)器代碼。編譯階段要進(jìn)行詞法分析和語(yǔ)法分析,又稱源程序分析。,.,14,1.1.3 創(chuàng)建和運(yùn)行C+程序,3. 連接 編譯后生成的目標(biāo)代碼還不能直接在計(jì)算機(jī)上運(yùn)行,其主要原因是編譯器對(duì)每個(gè)源程序文件分別進(jìn)行編譯,如果一個(gè)程序有多個(gè)源程序文件,編譯后這些源程序文件還分布在不同的地方。 4. 運(yùn)行 一個(gè)C+源程序經(jīng)過(guò)編譯和連接后生成了可執(zhí)行文件后,就可以在Windows環(huán)境下直接雙擊該文

7、件運(yùn)行該程序,也可以在Visual C+ 6.0的集成開(kāi)發(fā)環(huán)境下運(yùn)行。,.,15,1.1.3 創(chuàng)建和運(yùn)行C+程序,C+程序的上機(jī)實(shí)現(xiàn)過(guò)程: (1)啟動(dòng)Visual C+ 6.0 用戶可以單擊“開(kāi)始”菜單,在“程序”選項(xiàng)中選擇“Microsoft Visual Studio 6.0”級(jí)聯(lián)菜單下的“Microsoft Visual C+6.0”,或在桌面上雙擊“Microsoft Visual C+6.0”的快捷方式,就會(huì)啟動(dòng)Visual C+ 6.0。,.,16,1.1.3 創(chuàng)建和運(yùn)行C+程序,(2)在“文件”菜單下,選擇“新建”命令,將彈出“新建”對(duì)話框 選擇“工程”標(biāo)簽下的“Win32 Co

8、nsole Application”選項(xiàng),可創(chuàng)建一個(gè)基于控制臺(tái)應(yīng)用程序的工程; 在“工程”編輯欄內(nèi)輸入創(chuàng)建的工程名稱(CH1_01); 在“位置”編輯欄內(nèi)輸入工程的保存位置(E:student),確保單選按鈕“R創(chuàng)建新工作區(qū)”被選定, 其它選項(xiàng)選擇默認(rèn)值,單擊“確定”按鈕將彈出“Win32 Console Applition”項(xiàng)目步驟對(duì)話框。,.,17,1.1.3 創(chuàng)建和運(yùn)行C+程序,(3)在項(xiàng)目步驟對(duì)話框中,選擇要?jiǎng)?chuàng)建應(yīng)用程序的類型,共有4個(gè)選項(xiàng): “An empty project.”(一個(gè)空工程) “A simple application.”(一個(gè)簡(jiǎn)單應(yīng)用程序) “A ”Hello,W

9、orld“ application.”(一個(gè)“世界,你好”應(yīng)用程序) “An application that support MFC.”(一個(gè)支持MFC的應(yīng)用程序)。 例中選擇第1個(gè)選項(xiàng),創(chuàng)建一個(gè)空工程。,.,18,1.1.3 創(chuàng)建和運(yùn)行C+程序,(4)單擊“確定”按鈕,創(chuàng)建空工程的工作結(jié)束,回到Visual C+ 6.0的集成開(kāi)發(fā)環(huán)境。至此,系統(tǒng)為工程CH1_01自動(dòng)創(chuàng)建了E:studentCH1_01文件夾,并在其中生成了CH1_01.dsp、CH1_01.dsw、CH1_01.ncb和Debug文件夾。,.,19,1.1.3 創(chuàng)建和運(yùn)行C+程序,(5)在“文件”菜單下,選擇“新建”命令

10、,在出現(xiàn)的對(duì)話框中選擇“文件”標(biāo)簽,選擇“C+ Source File”選項(xiàng),創(chuàng)建一個(gè)C+源程序。然后在“文件”編輯欄內(nèi)輸入創(chuàng)建的C+源程序名(如CH1_01);在“目錄”編輯欄內(nèi)輸入C+源程序的保存位置(如e:studentCH1_01)。,.,20,1.1.3 創(chuàng)建和運(yùn)行C+程序,(6)單擊“確定”按鈕即可進(jìn)入代碼編輯窗口 ,代碼輸入完畢后,單擊“文件”菜單中的“保存”命令,或直接單擊工具欄上的“保存”工具按鈕,保存C+源程序,文件名為CH1_01.cpp。 (7)選擇“編譯”菜單下的“編譯CH1_01.cpp”項(xiàng)或單擊微型編譯工具欄中的“編譯程序”工具按鈕,對(duì)C+源程序CH1_01.cp

11、p進(jìn)行編譯。如果編譯有錯(cuò)誤,需要回到程序編輯窗口重新編輯,直到?jīng)]有錯(cuò)誤為止。,.,21,1.1.3 創(chuàng)建和運(yùn)行C+程序,(8)編譯完成后,選擇命令:“編譯”|“構(gòu)建 CH1_01.exe”或單擊微型編譯工具欄中的“構(gòu)建程序”工具按鈕,如果沒(méi)有連接錯(cuò)誤,將生成可執(zhí)行文件CH1_01.exe。 (9)用戶可以在Windows環(huán)境下直接用鼠標(biāo)雙擊CH1_01.exe文件,或者單擊微型編譯工具欄中的“執(zhí)行程序”工具按鈕,都可以執(zhí)行程序。,.,22,1.1.3 創(chuàng)建和運(yùn)行C+程序,程序運(yùn)行后,將彈出一個(gè)窗體要求用戶輸入兩個(gè)整數(shù),從鍵盤(pán)輸入60和40,中間用空格分隔,回車。屏幕顯示程序的運(yùn)行結(jié)果。,.,2

12、3,1.1.4 VC+集成開(kāi)發(fā)環(huán)境,Visual C+ 6.0是微軟公司開(kāi)發(fā)的可視化的C+集成開(kāi)發(fā)環(huán)境。它是集程序代碼的編輯、編譯、連接、調(diào)試等功能為一體,以一種方便、友好的界面提供給用戶。,.,24,1.1.4 VC+集成開(kāi)發(fā)環(huán)境,1菜單欄 下面是一些最常用的菜單: (1)文件:用于創(chuàng)建、打開(kāi)、關(guān)閉、保存一個(gè)新的文件、工程或工作區(qū)程。 (2)編輯:用于文件的編輯,如文件的復(fù)制、粘貼、查找等操作。 (3)查看:用于打開(kāi)、激活所需要的各種窗口,如工作區(qū)窗口、輸出窗口、屬性窗口等。 (4)插入:用于創(chuàng)建新的資源和類等。 (5)工程:用于向工程中添加文件、設(shè)置活動(dòng)工程、工程屬性等。 (6)編譯:用于

13、程序的編譯、構(gòu)建、調(diào)試、運(yùn)行、工程和配置等。 (7)工具:用于選擇或定制集成開(kāi)發(fā)環(huán)境中的一些工具、宏操作等。 (8)窗口:用于窗口的排列、拆分、隱藏或顯示等。 (9)幫助:提供幫助文件和關(guān)于等。,.,25,1.1.4 VC+集成開(kāi)發(fā)環(huán)境,2工具欄 通過(guò)工具欄,可以快速地使用常見(jiàn)的菜單選項(xiàng)。最常見(jiàn)的工具欄是標(biāo)準(zhǔn)工具欄。 3工作區(qū)窗口 工作區(qū)窗口有ClassView(類視圖)、ResourceView(資源視圖)和FileView(文件視圖)三個(gè)標(biāo)簽頁(yè),分別用來(lái)查看當(dāng)前工程所包含的所有類、資源和文件。,.,26,1.1.4 VC+集成開(kāi)發(fā)環(huán)境,(1)ClassView(類視圖),用于顯示當(dāng)前工作區(qū)

14、工程的類,全局變量和函數(shù)。 (2)FileView(文件視圖):FileView標(biāo)簽頁(yè)用于顯示當(dāng)前工程的源文件、頭文件、資源文件等 。,.,27,1.1.4 VC+集成開(kāi)發(fā)環(huán)境,4輸出窗口 輸出窗口有多個(gè)標(biāo)簽頁(yè),最常用的是“編譯”。在編譯、連接、運(yùn)行過(guò)程中顯示系統(tǒng)提供的有關(guān)信息,如出錯(cuò)信息等。,.,28,1.2 數(shù)據(jù)類型和表達(dá)式,1.2.1 基本語(yǔ)法成分 1.2.2 基本數(shù)據(jù)類型 1.2.3 變量和常量 1.2.4 運(yùn)算符和表達(dá)式 1.2.5 數(shù)組類型 1.2.6 結(jié)構(gòu)體和共用體 1.2.7 指針和引用,.,29,1.2.1 基本語(yǔ)法成分,計(jì)算機(jī)語(yǔ)言是人與計(jì)算進(jìn)行交流的工具,它也有嚴(yán)格的字符集

15、和嚴(yán)密的語(yǔ)法規(guī)則。 C+語(yǔ)言的基本要素是字符集,由字符集中的若干字符按照一定的語(yǔ)法規(guī)則組成C+程序中各種成分。下面介紹字符集、標(biāo)識(shí)符和關(guān)鍵字。,.,30,1.2.1 基本語(yǔ)法成分,1. 字符集 C+語(yǔ)言的字符集包括: (1)大小寫(xiě)英文字母:AZ,az (2)數(shù)字:09 (3)特殊字符:空格 ! # % ,.,54,1.2.6 結(jié)構(gòu)體和共用體,結(jié)構(gòu)體是一種特殊的數(shù)據(jù)類型,結(jié)構(gòu)體的定義僅僅是給出了該結(jié)構(gòu)體的組成情況,它和基本數(shù)據(jù)類型int、double等一樣,系統(tǒng)并不為其分配實(shí)際的存儲(chǔ)單元。為了使用它,必須定義結(jié)構(gòu)體變量。 結(jié)構(gòu)體變量聲明的一般格式如下: 結(jié)構(gòu)體 結(jié)構(gòu)體變量; 或 結(jié)構(gòu)體 結(jié)構(gòu)體變

16、量;,.,55,1.2.6 結(jié)構(gòu)體和共用體,結(jié)構(gòu)體變量初始化的一般格式為: struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名=初值; 或 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名=初值; 結(jié)構(gòu)體成員引用的一般格式為: 結(jié)構(gòu)體變量.成員名 其中,符號(hào)“.”是成員運(yùn)算符,用于訪問(wèn)一個(gè)結(jié)構(gòu)體變量中的某個(gè)結(jié)構(gòu)體成員。,.,56,1.2.6 結(jié)構(gòu)體和共用體,共用體 共用體同結(jié)構(gòu)體一樣,也是一種自定義的數(shù)據(jù)類型, 由若干數(shù)據(jù)成員組成。雖然共用體與結(jié)構(gòu)體有很多相似 之處,但兩者還是有本質(zhì)區(qū)別的。在任一時(shí)刻,結(jié)構(gòu)體 中的所有成員都是有意義的,而共用體中只有一個(gè)成員 有意義。這種不同反映到存儲(chǔ)空間分配上就是結(jié)構(gòu)體變 量各成員順序存放在一段內(nèi)

17、存中,每個(gè)成員分別占有自 己的內(nèi)存單元,結(jié)構(gòu)體變量所占存儲(chǔ)空間的大小等于其 所有數(shù)據(jù)成員所占存儲(chǔ)空間的總和。而共用體變量的各 成員均從同一地址開(kāi)始存放,共同占用同一存儲(chǔ)空間, 即各成員所占用的存儲(chǔ)空間是相互覆蓋的。,.,57,1.2.6 結(jié)構(gòu)體和共用體,共用體定義的一般形式為: union 共用體名 數(shù)據(jù)類型 成員1; 數(shù)據(jù)類型 成員2; 數(shù)據(jù)類型 成員n ; 共用體類型變量說(shuō)明的一般語(yǔ)法形式為: 共用體 共用體變量名;,.,58,1.2.7 指針和引用,1. 指針的基本概念 C+程序中定義變量,在編譯時(shí)系統(tǒng)為每一個(gè)變量分配內(nèi)存空間。 。所謂指針就是一個(gè)存儲(chǔ)單元的地址值,用來(lái)存放地址(即指針)

18、的變量也稱指針變量。 指針是一個(gè)變量,必須先聲明后使用。指針變量聲明的一般形式如下: 數(shù)據(jù)類型 * 標(biāo)識(shí)符;,.,59,1.2.7 指針和引用,與指針有關(guān)的基本運(yùn)算符有以下兩個(gè): (1)取地址運(yùn)算符 char *pstr=str; coutpstr6endl; /輸出W字符,.,65,1.2.7 指針和引用,7. 內(nèi)存動(dòng)態(tài)分配 C+語(yǔ)言提供了內(nèi)存動(dòng)態(tài)分配的方法。所謂內(nèi)存動(dòng)態(tài)分配是指在程序運(yùn)行期間根據(jù)實(shí)際需要申請(qǐng)內(nèi)存空間,并在不需要時(shí)釋放,它是一種在程序運(yùn)行時(shí)動(dòng)態(tài)申請(qǐng)和釋放內(nèi)存的技術(shù)。使用運(yùn)算符new和delete進(jìn)行內(nèi)存動(dòng)態(tài)分配和釋放,相應(yīng)地把內(nèi)存的申請(qǐng)和釋放過(guò)程稱作創(chuàng)建和刪除。,.,66,1

19、.2.7 指針和引用,(1)運(yùn)算符new 運(yùn)算符new用于申請(qǐng)所需的內(nèi)存空間。它的一般格式如下: * = new ; 動(dòng)態(tài)創(chuàng)建數(shù)組的一般格式如下: * = new 數(shù)據(jù)類型長(zhǎng)度;,.,67,1.2.7 指針和引用,(2)運(yùn)算符delete 當(dāng)程序中不再需要使用運(yùn)算符new申請(qǐng)到的內(nèi)存空間時(shí),必須要使用運(yùn)算符delete來(lái)釋放空間。一般操作形式如下: delete 指針名; /釋放非數(shù)組內(nèi)存單元 delete 指針名; /釋放數(shù)組內(nèi)存單元,.,68,1.2.7 指針和引用,8.引用 在C+語(yǔ)言中,提供了一種為變量起一個(gè)別名的機(jī)制,這個(gè)別名就是引用。聲明引用的一般格式如下: 數(shù)據(jù)類型 ,.,76,

20、1.3.3 循環(huán)語(yǔ)句,2. do-while循環(huán)語(yǔ)句 do-while循環(huán)語(yǔ)句的語(yǔ)法形式為: do 循環(huán)體語(yǔ)句; while(表達(dá)式);,.,77,1.3.3 循環(huán)語(yǔ)句,3. for循環(huán)語(yǔ)句 for循環(huán)語(yǔ)句比while循環(huán)語(yǔ)句和do-while循環(huán)語(yǔ)句功能更為強(qiáng)大。for循環(huán)語(yǔ)句的一般語(yǔ)法格式為: for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語(yǔ)句; ,.,78,1.3.3 循環(huán)語(yǔ)句,在使用for循環(huán)語(yǔ)句時(shí),注意以下幾種情況: (1)for語(yǔ)句中的3個(gè)表達(dá)式可以沒(méi)有。但每個(gè)表達(dá)式后的分號(hào)不能省略。此時(shí)for循環(huán)語(yǔ)句的形式為:for(;) 這時(shí)在循環(huán)體內(nèi)必須有其他控制循環(huán)執(zhí)行的語(yǔ)句,否則會(huì)形成死

21、循環(huán)。 (2)表達(dá)式1如果不存在或不是用來(lái)給循環(huán)變量賦初值,則應(yīng)在for語(yǔ)句前給循環(huán)變量賦初值。 (3)表達(dá)式2如果不存在,則在for語(yǔ)句循環(huán)體內(nèi)應(yīng)有其他控制循環(huán)執(zhí)行的語(yǔ)句,否則會(huì)形成死循環(huán)。 (4)表達(dá)式3如果不存在或不是用來(lái)修改循環(huán)變量的值,則應(yīng)在for語(yǔ)句循環(huán)體內(nèi)設(shè)置相應(yīng)的語(yǔ)句。,.,79,1.3.4 轉(zhuǎn)向語(yǔ)句,1. goto語(yǔ)句 goto語(yǔ)句一般語(yǔ)法格式為: goto 語(yǔ)句標(biāo)號(hào); 2. break語(yǔ)句 break語(yǔ)句的一般語(yǔ)法格式如下: break; 3. continue語(yǔ)句 continue語(yǔ)句的一般語(yǔ)法格式為: continue;,.,80,1.4 函數(shù),1.4.1 函數(shù)的定義和

22、說(shuō)明 1.4.2 函數(shù)的調(diào)用 1.4.3 函數(shù)的參數(shù) 1.4.4 函數(shù)的嵌套調(diào)用和遞歸調(diào)用 1.4.5 作用域和存儲(chǔ)類型 1.4.6 內(nèi)聯(lián)函數(shù) 1.4.7 函數(shù)重載 1.4.8 字符串處理函數(shù),.,81,1.4.1 函數(shù)的定義和說(shuō)明,函數(shù)定義的一般語(yǔ)法格式如下: 函數(shù)類型 函數(shù)名(參數(shù)表) 函數(shù)體; C+最重要的特征之一是函數(shù)原型。 函數(shù)原型的說(shuō)明一般語(yǔ)法格式為: 類型 函數(shù)名(參數(shù)列表);,.,82,1.4.2 函數(shù)的調(diào)用,1. 函數(shù)調(diào)用的概念 函數(shù)調(diào)用是用一個(gè)表達(dá)式來(lái)表示的。其調(diào)用的一般格式為: 函數(shù)名(實(shí)參列表) 要求實(shí)參與形參的個(gè)數(shù)相同、類型一致、順序一致。,.,83,1.4.2 函數(shù)

23、的調(diào)用,函數(shù)的返回值是在被調(diào)用函數(shù)中,通過(guò)返回語(yǔ)句return來(lái)實(shí)現(xiàn)的。返回語(yǔ)句return有兩個(gè)重要的作用:其一是使函數(shù)立即返回到其主調(diào)程序,其二是返回某個(gè)值。 函數(shù)有兩種返回情況,一種是無(wú)返回值,一種是有返回值。當(dāng)函數(shù)無(wú)返回值時(shí),函數(shù)類型必須用關(guān)鍵字void加以說(shuō)明。,.,84,1.4.3 函數(shù)的參數(shù),1. 傳值調(diào)用 這種方法是用參數(shù)傳遞數(shù)據(jù)的最常用的方法。傳值調(diào)用是指函數(shù)調(diào)用時(shí),給形參分配存儲(chǔ)空間,系統(tǒng)計(jì)算實(shí)參表達(dá)式的值,并把實(shí)參的值按順序賦給對(duì)應(yīng)的形式參數(shù),即對(duì)形參進(jìn)行初始化,然后執(zhí)行函數(shù)體。,.,85,1.4.3 函數(shù)的參數(shù),2. 傳址調(diào)用 使用傳址調(diào)用方式時(shí),形參是指針變量,實(shí)參是

24、地址值,由主調(diào)程序向被調(diào)用函數(shù)傳遞地址。在函數(shù)調(diào)用時(shí),把實(shí)參數(shù)地址賦給形式參數(shù),形參和實(shí)參都表示同一地址中的值。因此,形參所指向內(nèi)容的任何改變都會(huì)導(dǎo)致實(shí)參所指向內(nèi)容的改變。,.,86,1.4.3 函數(shù)的參數(shù),3. 引用調(diào)用 引用也是一種特殊類型的變量,它不同于指針。引用是為程序中變量取一個(gè)別名,引用作為函數(shù)的參數(shù)時(shí),形參是實(shí)參的引用,則形參和實(shí)參指的是同一個(gè)變量,在函數(shù)調(diào)用中對(duì)形參的改變實(shí)際上就是對(duì)實(shí)參的改變。,.,87,1.4.4 函數(shù)的嵌套調(diào)用和遞歸調(diào)用,1. 函數(shù)的嵌套調(diào)用 程序從主函數(shù)開(kāi)始執(zhí)行,遇到函數(shù)調(diào)用時(shí),如果函數(shù)是有參函數(shù),C+先進(jìn)行實(shí)參對(duì)形參的替換,然后執(zhí)行被調(diào)用函數(shù)的函數(shù)體。

25、如果函數(shù)體中還調(diào)用其他函數(shù),再轉(zhuǎn)入執(zhí)行其他函數(shù)體。函數(shù)體執(zhí)行完畢后,返回到主調(diào)函數(shù),繼續(xù)執(zhí)行主調(diào)函數(shù)中的后續(xù)程序行。若在一個(gè)函數(shù)中又調(diào)用另一個(gè)函數(shù),則稱這樣的調(diào)用過(guò)程為函數(shù)的嵌套調(diào)用,.,88,1.4.4 函數(shù)的嵌套調(diào)用和遞歸調(diào)用,2. 函數(shù)的遞歸調(diào)用 在調(diào)用一個(gè)函數(shù)的過(guò)程中出現(xiàn)直接或間接調(diào)用該函數(shù)本身,稱作函數(shù)的遞歸調(diào)用。這樣的函數(shù)稱為遞歸函數(shù)。編寫(xiě)遞歸函數(shù)時(shí),必須有終止遞歸調(diào)用的條件。,.,89,1.4.5 作用域和存儲(chǔ)類型,1. 作用域 作用域是一個(gè)標(biāo)識(shí)符在程序中有效范圍。C+的作用域有函數(shù)原型作用域、塊作用域、函數(shù)作用域和文件作用域。 函數(shù)原型參數(shù)列表中的標(biāo)識(shí)符具有函數(shù)原型作用域。函數(shù)

26、原型只需要參數(shù)的類型,并不需要參數(shù)名。參數(shù)名只在函數(shù)原型聲明的兩個(gè)圓括號(hào)內(nèi)有效。,.,90,1.4.5 作用域和存儲(chǔ)類型,塊作用域又稱局部作用域。在一個(gè)復(fù)合語(yǔ)句內(nèi)聲明的標(biāo)識(shí)符具有塊作用域,其作用域是從聲明處開(kāi)始,一直到復(fù)合語(yǔ)句結(jié)束的花括號(hào)為止。由于函數(shù)體在句法上可以看作一個(gè)復(fù)合語(yǔ)句,所以函數(shù)中聲明的標(biāo)識(shí)符具有塊作用域。另外函數(shù)的形參也屬于塊作用域。,.,91,1.4.5 作用域和存儲(chǔ)類型,2. 局部變量和全局變量 局部變量具有局部作用域。局部變量?jī)H在定義它的函數(shù)或類內(nèi)起作用,在這個(gè)范圍之外不能使用這些變量。 全局變量是在函數(shù)和類外部定義的變量。全局變量的作用域從說(shuō)明點(diǎn)開(kāi)始直到文件的結(jié)束。這種作

27、用域也稱為文件作用域。,.,92,1.4.5 作用域和存儲(chǔ)類型,提示:好的程序設(shè)計(jì)方法是 用函數(shù)交換信息應(yīng)使用參數(shù)和返回值,而不使用全局變量。如果全局變量與函數(shù)的局部變量同名,在函數(shù)的局部變量的作用域內(nèi),同名的全局變量無(wú)效。為了在函數(shù)體內(nèi)使用與局部變量同名的全局變量,應(yīng)在全局變量前面使用作用域作用符“:”。,.,93,1.4.5 作用域和存儲(chǔ)類型,3. 變量的存儲(chǔ)類型 C+把程序運(yùn)行時(shí)所占用的存儲(chǔ)空間分為程序代碼區(qū)域、靜態(tài)存儲(chǔ)區(qū)域和動(dòng)態(tài)存儲(chǔ)區(qū)域三部分,動(dòng)態(tài)存儲(chǔ)區(qū)域又分為堆棧區(qū)域和堆區(qū)域。變量主要分配在靜態(tài)和動(dòng)態(tài)兩個(gè)區(qū)域中,另外,有些變量還可以分配在計(jì)算機(jī)中的寄存器中。在定義變量時(shí)不僅要指明變量的數(shù)據(jù)類型,還要指出變量的存儲(chǔ)類型。 因此,變量的一般定義格式為: 存儲(chǔ)類型 數(shù)據(jù)類型 變量名=初值; C+中常用的存儲(chǔ)類型有:auto(自動(dòng)類型)、register(寄存器類型)、static(靜態(tài)類型)、extern(全局類型)。,.,94,1.4.5 作用域和存儲(chǔ)類型,4. 內(nèi)部函數(shù)和外部函數(shù) C+中所有函數(shù)定義都是獨(dú)立的,不能嵌套。 (1)內(nèi)部函數(shù) 內(nèi)部函數(shù)又稱為靜態(tài)函數(shù),它只能在定義它的源文件中被調(diào)用,而不能被其他源文件的函數(shù)調(diào)用。在定義內(nèi)部函數(shù)時(shí),在函數(shù)名和函數(shù)類型的前面加

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論