




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件開發(fā)魔典從入門到項目實踐項目實踐清華大學(xué)出版社(超值版)本課時學(xué)習(xí)重點掌握函數(shù)定義與調(diào)用的方法。掌握參數(shù)傳遞的方法。熟悉并掌握函數(shù)調(diào)用的機制。熟悉變量的作用域。熟悉變量的存儲類別。掌握函數(shù)重載的方法。熟悉內(nèi)聯(lián)函數(shù)。熟悉編譯預(yù)處理的方法。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)概述“函數(shù)”這個名詞是從英文function翻譯過來的,其實function的原意是“功能”。顧名思義,一個函數(shù)就是一個功能。在實際應(yīng)用的程序中,每個C++程序都至少有一個函數(shù),即主函數(shù)main(),它的作用就是調(diào)用各個函數(shù),程序各部分的功能全部都是由各函數(shù)實現(xiàn)的。主函數(shù)相當于總調(diào)度,調(diào)動各函數(shù)依次實現(xiàn)各項功能。開發(fā)商和軟件開發(fā)人員將一些常用的功能模塊編寫成函數(shù),放在函數(shù)庫中供公共選用。程序開發(fā)人員要善于利用庫函數(shù),以減少重復(fù)編寫程序段的工作量。從用戶使用的角度來說,C++中的函數(shù)主要有以下兩種。(1)系統(tǒng)函數(shù):即庫函數(shù)。這是編譯系統(tǒng)提供的,用戶不需要定義這些函數(shù)就可以直接使用。(2)用戶自定義函數(shù):用戶根據(jù)程序功能的需要自己編寫的函數(shù)。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)的定義與調(diào)用函數(shù)的定義函數(shù)的聲明函數(shù)的調(diào)用聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)的定義在C++中,函數(shù)由一個函數(shù)頭和一個函數(shù)主體組成。下面列出一個函數(shù)的所有組成部分:聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件/*
函數(shù)頭*//*
函數(shù)主體*/<函數(shù)類型> <函數(shù)名>
(<形式參數(shù)表>){若干語句;…}函數(shù)類型:一個函數(shù)可以返回一個值。函數(shù)類型就是函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作而不返回值,在這種情況下,類型的關(guān)鍵字是void。函數(shù)名:這是函數(shù)的實際名稱。函數(shù)名和參數(shù)列表一起構(gòu)成了函數(shù)簽名。形式參數(shù)表:即函數(shù)中可以有多個形式參數(shù),也可以沒有形式參數(shù)。形式參數(shù)簡稱形參,根據(jù)形參的有無,函數(shù)分為兩類:有參函數(shù)和無參函數(shù)。函數(shù)主體:函數(shù)主體包含一組定義函數(shù)執(zhí)行任務(wù)的語句。函數(shù)的聲明函數(shù)聲明會告訴編譯器函數(shù)名稱及如何調(diào)用函數(shù)。為了增加程序的可讀性,函數(shù)的聲明放在main函數(shù)體內(nèi)的前面。函數(shù)的實際主體可以單獨定義。函數(shù)聲明的格式如下:<函數(shù)類型><函數(shù)名>(<形式參數(shù)表>);函數(shù)的聲明要和函數(shù)定義時的函數(shù)類型、函數(shù)名和參數(shù)類型一致,但形參名可以省略,而且還可以不相同。在函數(shù)聲明中,參數(shù)的名稱并不重要,只有參數(shù)的類型是必需的,因此下例也是有效的聲明:int
max(int,
int);注意:如果聲明的函數(shù)在該函數(shù)定義之后,而調(diào)用該函數(shù)在前,就會產(chǎn)生錯誤。為了解決這個問題,必須將函數(shù)定義在主調(diào)函數(shù)的前面或在調(diào)用前進行函數(shù)的聲明。函數(shù)的聲明消除了函數(shù)定義的位置的影響,也就是說,不管函數(shù)是在何處定義的,只要在調(diào)用前進行聲明,就可以保證函數(shù)調(diào)用的合法性。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)的調(diào)用在創(chuàng)建C++函數(shù)時,會定義函數(shù)做什么,然后通過調(diào)用函數(shù)來完成已定義的任務(wù)。當程序調(diào)用函數(shù)時,程序控制權(quán)會轉(zhuǎn)移給被調(diào)用的函數(shù)。被調(diào)用的函數(shù)執(zhí)行已定義的任務(wù),當函數(shù)的返回語句被執(zhí)行時,或到達函數(shù)的結(jié)束括號時,會把程序控制權(quán)交還給主程序。1.無參函數(shù)的調(diào)用2.有參函數(shù)的調(diào)用3.調(diào)用函數(shù)時,傳遞所需參數(shù),如果函數(shù)返回一個值,則可以存儲返回值聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件參數(shù)傳遞、返回值函數(shù)參數(shù)函數(shù)返回值聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)參數(shù)在定義函數(shù)時函數(shù)名后面括號中的變量名稱為形式參數(shù)(formalparameter,簡稱形參),在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括號中的參數(shù)(可以是一個表達式)稱為實際參數(shù)(actualparameter,簡稱實參)。【例8-5】編寫程序,調(diào)用函數(shù)時傳遞數(shù)據(jù)。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)返回值1.
對函數(shù)返回值的說明如下:(1)函數(shù)的返回值是指由被調(diào)函數(shù)計算處理后向主調(diào)函數(shù)返回的一個計算結(jié)果,最多只能有一個,用return語句實現(xiàn)。(2)函數(shù)值的類型。既然函數(shù)有返回值,這個值當然應(yīng)屬于某一個確定的類型,應(yīng)當在定義函數(shù)時指定函數(shù)值的類型。(3)如果函數(shù)值的類型和return語句中表達式的值不一致,則以函數(shù)類型為準,即函數(shù)類型決定返回值的類型。對數(shù)值型數(shù)據(jù),可以自動進行類型轉(zhuǎn)換。(4)執(zhí)行被調(diào)函數(shù)時,可能有多個return語句,但遇到第1個return語句就結(jié)束函數(shù)的執(zhí)行,返回到主調(diào)函數(shù)。若函數(shù)中無return語句,則會執(zhí)行到函數(shù)體最后的“}”為止,返回到主調(diào)函數(shù)。(5)return后面的表達式可以有括號,也可以沒有括號。(6)無返回值的函數(shù)其返回值類型應(yīng)說明為void類型,否則將返回一個不確定的值。2.
return語句有以下兩種形式:(1)用于帶有返回值的函數(shù)。(2)用于無返回值的函數(shù)。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)調(diào)用機制函數(shù)調(diào)用的方式函數(shù)參數(shù)傳遞方式調(diào)用函數(shù)的嵌套調(diào)用遞歸帶默認值的函數(shù)調(diào)用聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)調(diào)用的方式調(diào)用一個函數(shù),按照該函數(shù)在語句中的作用來分,可以有以下3種函數(shù)調(diào)用方式:1.函數(shù)語句把函數(shù)調(diào)用單獨作為一個語句,并不要求函數(shù)帶回一個值,只是要求函數(shù)完成一定的操作。2.函數(shù)表達式函數(shù)出現(xiàn)在一個表達式中,這時要求函數(shù)帶回一個確定的值以參加表達式的運算。3.函數(shù)參數(shù)函數(shù)調(diào)用作為一個函數(shù)的實參。4.被調(diào)用函數(shù)的聲明函數(shù)聲明的位置可以在調(diào)用函數(shù)所在的函數(shù)中,也可以在函數(shù)之外。如果函數(shù)聲明放在函數(shù)的外部,在所有函數(shù)定義之前,則在各個主調(diào)函數(shù)中不必對所調(diào)用的函數(shù)再作聲明。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)參數(shù)傳遞方式調(diào)用在調(diào)用函數(shù)時,實參會向形參進行數(shù)據(jù)傳遞,傳遞的方式分為3種。1.按值傳遞該方法把參數(shù)的實際值復(fù)制給函數(shù)的形式參數(shù)。在這種情況下,修改函數(shù)內(nèi)的形式參數(shù)對實際參數(shù)沒有影響。2.按指針傳遞向函數(shù)傳遞參數(shù)的指針調(diào)用方法,把參數(shù)的地址復(fù)制給形式參數(shù)。在函數(shù)內(nèi),該地址用于訪問調(diào)用中要用到的實際參數(shù)。這意味著,修改形式參數(shù)會影響實際參數(shù)。3.按引用傳遞該方法是引用變量的別名,對別名的訪問就是對別名所關(guān)聯(lián)變量的訪問,反之亦然。這意味著,修改形式參數(shù)會影響實際參數(shù)。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用是指在一個函數(shù)體中又調(diào)用了其它函數(shù)。在程序中實現(xiàn)函數(shù)嵌套調(diào)用時,需要注意的是在調(diào)用函數(shù)之前,需要對每一個被調(diào)用的函數(shù)作聲明(除非定義在前,調(diào)用在后)。【例8-10】編寫程序,使用函數(shù)的嵌套關(guān)系,判斷出最大值。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件遞歸函數(shù)在定義自身的同時又出現(xiàn)了對自身的調(diào)用稱之為遞歸。遞歸是一種描述問題的方法,或稱算法。遞歸的思想可以簡單地描述為“自己調(diào)用自己
”。遞歸調(diào)用有兩種形式:1.直接遞歸如果一個函數(shù)在其定義體內(nèi)直接調(diào)用自己,則稱直接遞歸函數(shù)。2.間接遞歸如果一個函數(shù)經(jīng)過一系列的中間調(diào)用語句,通過其他函數(shù)間接調(diào)用自己,則稱間接遞歸函數(shù)。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件帶默認值的函數(shù)調(diào)用在C++中,形參值是由實參值決定的,因此形參和實參的個數(shù)和類型都要相同。而定義函數(shù)時可以給形參指定一個默認的值,這樣調(diào)用函數(shù)時如果沒有給這個形參賦值(沒有對應(yīng)的實參),那么就使用這個默認的值。也就是說,調(diào)用函數(shù)時可以省略有默認值的參數(shù)。如果用戶指定了參數(shù)的值,那么就使用用戶指定的值,否則使用參數(shù)的默認值。所謂默認參數(shù),指的是當函數(shù)調(diào)用中省略了實參時自動使用的一個值,這個值就是給形參指定的默認值。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件變量作用域局部變量作用域全局變量作用域函數(shù)作用域文件作用域聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件局部變量作用域在一個函數(shù)內(nèi)部定義的變量稱為局部變量,它的作用域只在本函數(shù)范圍內(nèi)有效,也就是說只有在本函數(shù)內(nèi)才能使用,在此函數(shù)以外是不能使用這些變量的。對局部變量的一些說明:(1)主函數(shù)main中定義的變量(i和j)也只在主函數(shù)中有效,因為函數(shù)間的關(guān)系是相互獨立的和并行的,所以主函數(shù)也不能使用其他函數(shù)中定義的變量。(2)不同函數(shù)中可以使用同名的變量,它們代表不同的對象,互不干擾。例如,在fun1函數(shù)中定義了變量b和c,倘若在fun2函數(shù)中也定義變量b和c,它們在內(nèi)存中占不同的單元,不會混淆。(3)可以在一個函數(shù)內(nèi)的復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效,這種復(fù)合語句也稱為分程序或程序塊。(4)形式參數(shù)也是局部變量。例如fun1函數(shù)中的形參a也只在fun1函數(shù)中有效。其他函數(shù)不能調(diào)用。(5)在函數(shù)聲明中出現(xiàn)的參數(shù)名,其作用范圍只在本行的括號內(nèi)。實際上,編譯系統(tǒng)對函數(shù)聲明中的變量名是忽略的,即使在調(diào)用函數(shù)時也沒有為它們分配存儲單元。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件全局變量作用域在函數(shù)外部定義的變量就稱為全局變量。全局變量的有效范圍為從定義變量的位置開始到本源文件結(jié)束。對全局變量的一些說明:(1)全局變量的作用是增加函數(shù)間數(shù)據(jù)聯(lián)系的渠道。(2)建議不在必要時不要使用全局變量,原因有以下幾點:①全局變量在程序的全部執(zhí)行過程中都占用存儲單元,而不是僅在需要時才開辟單元。②它使函數(shù)的通用性降低了,因為在任何函數(shù)中都可以修改該變量。③一般要求把程序中的函數(shù)做成一個封閉體,除了可以通過“實參—形參”的渠道與外界發(fā)生聯(lián)系外,沒有其他渠道。這樣的程序移植性好,可讀性強。④使用全局變量過多,會降低程序的清晰性。在各個函數(shù)執(zhí)行時都可能改變?nèi)肿兞康闹?,程序容易出錯。因此,要限制使用全局變量。(3)如果在同一個源文件中,全局變量與局部變量同名,則在局部變量的作用范圍內(nèi),全局變量被屏蔽。但可以使用作用域運算符“::”訪問同名的全局變量。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)作用域函數(shù)也是有作用域的,在本質(zhì)上函數(shù)的作用域是全局的。但是,因為一個函數(shù)要被另外的函數(shù)調(diào)用,所以根據(jù)該函數(shù)作用范圍的不同,決定函數(shù)除了能被本文件中的函數(shù)調(diào)用之外,還能被其他文件中的函數(shù)調(diào)用。根據(jù)函數(shù)能否被其他源文件調(diào)用,將函數(shù)區(qū)分為內(nèi)部函數(shù)和外部函數(shù)。1.內(nèi)部函數(shù)當一個函數(shù)只能被本文件中的其他函數(shù)所調(diào)用時,稱它為內(nèi)部函數(shù),在定義內(nèi)部函數(shù)時,在函數(shù)名和函數(shù)類型的前面加static,所以內(nèi)部函數(shù)又稱靜態(tài)函數(shù)。2.外部函數(shù)沒有用static修飾的函數(shù)均為外部函數(shù),因為外部函數(shù)是函數(shù)的默認類型。外部函數(shù)也可以用關(guān)鍵字extern進行說明。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件文件作用域文件作用域也稱“全局作用域”。(1)定義在所有函數(shù)之外的標識符,具有文件作用域,作用域為從定義處到整個源文件結(jié)束。(2)文件中定義的全局變量和函數(shù)都具有文件作用域。(3)如果某個文件中說明了具有文件作用域的標識符,該文件又被另一個文件包含,則該標識符的作用域延伸到新的文件中。如cin和cout是在頭文件iostream中說明的具有文件作用域的標識符,它們的作用域也延伸到嵌入iostream的文件中。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件函數(shù)重載參數(shù)類型不同的函數(shù)重載參數(shù)個數(shù)上不同的函數(shù)重載聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件參數(shù)類型不同的函數(shù)重載在編程時,有時需要實現(xiàn)一些相類似的功能,只是有些細節(jié)不同。例如希望從3個數(shù)中找出其中的最大者,而每次求最大數(shù)時數(shù)據(jù)的類型不同,可能是3個整數(shù)、3個雙精度數(shù)或3個長整數(shù)。用戶往往會分別設(shè)計出3個不同名的函數(shù)。例如:int max1(int
x,
int
y,
int
z); /*求3個整數(shù)中的最大者*/long max2(long
x,
long
y,
long
z);
/*求3個長整數(shù)中的最大者*/double max3(doublex,
double
y,
double
z);/*求3個雙精度數(shù)中最大者*/這幾個函數(shù)都是求最大值的,但必須用不同的函數(shù)名,確實很麻煩。但是,對于不同類型的函數(shù)時,可以使用相同的函數(shù)名。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件參數(shù)個數(shù)上不同的函數(shù)重載函數(shù)的重載不僅允許參數(shù)類型不同外,還允許參數(shù)個數(shù)的不同?!纠?-16】編寫程序,調(diào)用參數(shù)個數(shù)不同函數(shù)名相同的函數(shù)。聚慕課教育研究中心學(xué)習(xí)、授課與教學(xué)PPT課件內(nèi)聯(lián)函數(shù)當程序執(zhí)行函數(shù)調(diào)用時,系統(tǒng)要建立??臻g,保護現(xiàn)場,傳遞參數(shù)以及控制程序執(zhí)行的轉(zhuǎn)移等等,這些工作需要一定的時間和空間的開銷。為了提高效率,一個解決辦法就是不使用函數(shù),直接將函數(shù)的代碼嵌入到程序中。但這個辦法也有缺點,一是相同代碼重復(fù)書寫,二是程序可讀性往往沒有使用函數(shù)的好。為了協(xié)調(diào)好效率和可讀性之間的矛盾,C++提供了另一種方法,即定義內(nèi)聯(lián)函數(shù),方
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保行政處罰考核試卷
- 秋天的回憶初三語文作文
- 娛樂場所室內(nèi)環(huán)境舒適度優(yōu)化考核試卷
- 舊夢初二語文話題作文
- 租賃經(jīng)營模式的智能化應(yīng)用與數(shù)字創(chuàng)新考核試卷
- 海洋石油鉆采工藝與設(shè)備考核試卷
- 電氣設(shè)備防誤操作技術(shù)考核試卷
- 廈門市高三語文質(zhì)檢作文
- 石材加工企業(yè)市場營銷策略優(yōu)化考核試卷
- 下肢深靜脈血栓的預(yù)防和護理
- 山東省高中名校2025屆高三4月校際聯(lián)合檢測大聯(lián)考生物試題及答案
- 2025年武漢數(shù)學(xué)四調(diào)試題及答案
- 中國紡織文化智慧樹知到期末考試答案2024年
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評價導(dǎo)則
- 河北省用人單位錄用人員身份核查登記表
- 《給教師的100條建議》電子書
- 老視的機制及治療的研究進展
- VDA6.3的P2-7條款
- 工程聯(lián)系單表格(模板)
- 混凝土攪拌機設(shè)計論文
- 《Clean,Not Clean》RAZ分級閱讀繪本pdf資源
評論
0/150
提交評論