visualstudio學(xué)習(xí)第5章函數(shù).pptx_第1頁
visualstudio學(xué)習(xí)第5章函數(shù).pptx_第2頁
visualstudio學(xué)習(xí)第5章函數(shù).pptx_第3頁
visualstudio學(xué)習(xí)第5章函數(shù).pptx_第4頁
visualstudio學(xué)習(xí)第5章函數(shù).pptx_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章 函數(shù),在開發(fā)較大的程序時,經(jīng)常需要把程序分解為若干個程序模塊,每一個模塊實現(xiàn)一個特定的功能。在C+程序中,函數(shù)就是一個基本的程序模塊。在前面的程序中,都是在自己編寫的主函數(shù)main(),有時還會調(diào)用標準庫中的一些函數(shù)。本章將介紹如何定義自己的函數(shù)。 聲明并編寫自己的C+函數(shù) 函數(shù)的參數(shù) 函數(shù)的調(diào)用 函數(shù)和數(shù)組的使用 變量的作用域 函數(shù)模板 C+/CLI中的函數(shù)和泛型函數(shù),5.1 函數(shù)的定義,從用戶使用的角度看,函數(shù)有兩種:標準函數(shù)和自定義函數(shù)。標準函數(shù)也就是庫函數(shù),這是由系統(tǒng)提供的,用戶不必自己定義這些函數(shù),可以直接使用。自定義函數(shù)則是用戶根據(jù)需求,自己編寫的用于實現(xiàn)特定功能,這也是我們本章要介紹的函數(shù)類型。 自定義函數(shù)也可以分為兩種: 無參函數(shù) 在調(diào)用無參函數(shù)時,主調(diào)函數(shù)并不將數(shù)據(jù)傳遞給被調(diào)函數(shù)。無參函數(shù)一般是用來執(zhí)行指定的操作。 有參數(shù)函數(shù) 在調(diào)用有參數(shù)函數(shù)是,在主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞。也就是說,主調(diào)函數(shù)可以將數(shù)據(jù)傳給被調(diào)函數(shù)使用,被調(diào)函數(shù)中的數(shù)據(jù)也可以帶回來供主調(diào)函數(shù)使用。,5.2 函數(shù)的參數(shù)和返回值,大多數(shù)情況下,在調(diào)用函數(shù)時,主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關(guān)系。主調(diào)函數(shù)通過參數(shù)將數(shù)據(jù)傳遞給被調(diào)函數(shù),而被調(diào)函數(shù)則通過返回值向主調(diào)函數(shù)傳遞數(shù)據(jù)。,5.2.1 實參與形參,在定義函數(shù)時,函數(shù)名后面括號中的變量名稱為“形式參數(shù)”,簡稱“形參”,在主調(diào)節(jié)器函數(shù)中調(diào)用函數(shù)時,函數(shù)后面括號中的參數(shù)稱為“實際參數(shù)”,簡稱“實參”。,5.2.2 函數(shù)的返回值,被調(diào)函數(shù)向主調(diào)函數(shù)傳遞數(shù)據(jù)的一種方法就是使用返回值。例如,在示例Exce5_01中,函數(shù)power(5.0,2)的返回值就是25,輸出語句在命令行輸出了這個值。 函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。return語句的一般形式為: return 表達式; 或者為: return (表達式); 當函數(shù)執(zhí)行時遇到return句,則該函數(shù)將結(jié)束執(zhí)行立即返回到主調(diào)函數(shù)。在函數(shù)中允許有多個return語句,但每次調(diào)用函數(shù)只會有一個return語句被執(zhí)行,因此也只會返回一個函數(shù)值。,在定義函數(shù)時,如果在形參前添加const修飾符,則表示該參數(shù)不能在函數(shù)中以任何方式修改。,5.3 函數(shù)的調(diào)用,前面已經(jīng)說過,在程序中是通過對函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,函數(shù)調(diào)用的一般形式為: 函數(shù)名(實參列表) 如果函數(shù)是無參函數(shù),則還可以省略實參列表。,5.3.1 函數(shù)調(diào)用機制,在調(diào)用函數(shù)時,程序的執(zhí)行流程將從一塊代碼跳到另一塊代碼,并將實際參數(shù)傳遞過去;當被調(diào)用函數(shù)結(jié)束后,程序的執(zhí)行流程返回會到原來的代碼塊繼續(xù)執(zhí)行,并返回函數(shù)的執(zhí)行結(jié)果。為了管理函數(shù)調(diào)用過程中的數(shù)據(jù)傳遞和執(zhí)行代碼的控制轉(zhuǎn)移,大多數(shù)程序語言使用棧來進行管理。 棧是一種先進后出的數(shù)據(jù)結(jié)構(gòu),如果數(shù)據(jù)元素是以a1,a2,an的順序進棧,則出棧的次序卻是an,an-1,a1,如圖5-2所示。棧的工作原理類似于在子彈匣中壓子彈一樣,最先壓入彈匣的子彈要到最后才發(fā)射出去,而最后壓入彈匣的子彈則最先被發(fā)射出去。棧的工作過程如右圖所示。,5.3.3 函數(shù)原型,在編寫程序時,應(yīng)該在程序文件的開頭為在程序中要使用的每個函數(shù)編寫其函數(shù)原型,這樣就不會因為函數(shù)的位置不正確而無法編譯程序了。對于標準庫函數(shù),其函數(shù)的原型已經(jīng)包含基其頭文件中,因此在包含頭文件后就不再需要函數(shù)原型。,5.4 函數(shù)的遞歸調(diào)用,如果一個函數(shù)在被調(diào)用的過程中,又發(fā)生了直接或間接地調(diào)用它自己,這種現(xiàn)象稱為函數(shù)的遞歸調(diào)用。遞歸是一種非常有效的數(shù)學(xué)方法,也是程序設(shè)計的一種重要算法。對某些問題的處理,采用遞歸的方法比非遞歸方法更為有效,或者能夠更自然、更明顯地反映出解決問題的過程。,5.5 函數(shù)的默認參數(shù)值,如果函數(shù)有多個參數(shù),那么還給多個參數(shù)設(shè)置默認值,但是指定默認值的參數(shù)都必須放在參數(shù)列表的最后。因為,在調(diào)用函數(shù)時要使用參數(shù)的默認值,應(yīng)省略相應(yīng)的參數(shù)。如果省略參數(shù)列表中間的參數(shù),則編譯器將無法確定提供的實參所對應(yīng)的形參。,5.6 函數(shù)和數(shù)組,在前面定義的函數(shù)中,所使用的參數(shù)均為變量。由于數(shù)組元素也起到了變量的作用,因此數(shù)組元素也可以做為參數(shù)傳遞。另外,數(shù)組也可以用作函數(shù)的參數(shù),此時并不會復(fù)制整個數(shù)組,而是將數(shù)組在內(nèi)存中的地址傳遞給被調(diào)函數(shù)。這樣,可以有效地減少因為復(fù)制大型數(shù)組而降低程序的性能。 將整個數(shù)組作作函數(shù)參數(shù),此時實參與形參都應(yīng)用數(shù)組名,而且其類型應(yīng)該一致。實際上,整個數(shù)組作函數(shù)參數(shù)傳遞的是數(shù)組的首地址,將實參數(shù)組的首地址傳遞給形參數(shù)組后,形參數(shù)組與實參數(shù)組將共享相同的存儲單元,此時可以實現(xiàn)數(shù)據(jù)的雙向傳遞。即在函數(shù)中改變形參數(shù)組的值后,主調(diào)函數(shù)的實參數(shù)組也將同時改變。,5.7 函數(shù)與變量的作用域,在程序中定義變量時,由于定義變量的位置不同,決定了在程序的某處是否可以訪問該變量。這就是變量的一個重要屬性作用域。只有在一個變量的作用域內(nèi),才可以合法地使用它。在一個變量的作用域外,是不能引用它的。根據(jù)變量的作用域不同,變量可以分為局部變量和全局變量。,5.7.1 局部變量,局部變量也稱為內(nèi)部變量。局部變量是在一個函數(shù)內(nèi)定義的變量。其作用域僅限于函數(shù)內(nèi),離開該函數(shù)后就不能再使用該變量。,5.7.2 全局變量,全局變量也稱為外部變量,它是在函數(shù)外部定義的變量。全局變量不屬于哪一個函數(shù),它屬于一個源程序文件,其作用域是整個源程序。,5.8 變量的生存期,在程序執(zhí)行時,所有變量都有一個有限的生存期。從聲明它們開始存在,在程序的某時該結(jié)束。變量的生存期由變量的存儲方式?jīng)Q定,變量的存儲方式可分為“靜態(tài)存儲”和“動態(tài)存儲”兩種。 靜態(tài)存儲變量通常是在變量定義時就分定存儲單元,并一直保持不變,直至整個程序結(jié)束。全局變量即屬于此類存儲方式。動態(tài)存儲變量是在程序執(zhí)行過程中,當需要使用它時才分配存儲單元,使用完畢立即釋放。如函數(shù)的形式參數(shù),在函數(shù)定義時并不給形參分配存儲單元,只是在函數(shù)被調(diào)用時,才予以分配,調(diào)用函數(shù)執(zhí)行完畢后立即釋放。如果一個函數(shù)被多次調(diào)用,則會反復(fù)地分配、釋放形參變量的存儲單元。,5.8.1 自動變量,自動變量是在程序運行期間根據(jù)需要進行動態(tài)的分配存儲空間。到目前為止,在函數(shù)內(nèi)定義的所有局部變量都是自動變量,它們具有局部作用域。一個自動變量在其作用域中的時間從聲明它的哪一刻開始,一直到包含其聲明的代碼塊結(jié)束為止。 自動變量起始于它被定義之時,它占用的空間在程序的棧內(nèi)存空間上分配,并且在包含其定義的代碼塊結(jié)束時自動消失。每次執(zhí)行包含一個自動變量聲明的代碼塊時,這個變量就被重新創(chuàng)建。當一個自動變量消失時,它在棧上的內(nèi)存將被釋放,而由其他自動變量使用。,5.8.2 靜態(tài)變量,靜態(tài)變量的類型說明符為關(guān)鍵字static。靜態(tài)變量屬于靜態(tài)存儲方式。對于自動變量,也可以用static定義它為靜態(tài)自動變量,或稱靜態(tài)局部變量,從而成為靜態(tài)存儲方式。 在局部變量的說明前再加上static說明符就構(gòu)成靜態(tài)局部變量。,5.9 函數(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論