計算機程序設計語言(vc++)第五章 函數(shù)_第1頁
計算機程序設計語言(vc++)第五章 函數(shù)_第2頁
計算機程序設計語言(vc++)第五章 函數(shù)_第3頁
計算機程序設計語言(vc++)第五章 函數(shù)_第4頁
計算機程序設計語言(vc++)第五章 函數(shù)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章函數(shù)主講人:劉廣峰5.1概述 5.2函數(shù)的定義與調用 5.3函數(shù)的參數(shù)傳遞 5.4函數(shù)與指針 5.5函數(shù)的其他特性 5.6C++語言的庫函數(shù) 5.7遞歸函數(shù) 5.8變量的生存周期 5.9編譯預處理 5.10其他知識 5.11案例實踐 5.2函數(shù)的定義與調用5.2.1函數(shù)的定義具體定義的格式為:返回值類型函數(shù)名(形參列表){函數(shù)體}例如,下面的函數(shù)add用于實現(xiàn)兩個整數(shù)相加的功能:intadd(intx,inty){ return(x+y);}在定義一個函數(shù)時要注意以下幾個方面。(1) 確定該函數(shù)所要實現(xiàn)的功能,使用算法描述該功能,使用C++語言完成編碼,讓計算機去執(zhí)行。(2) 在分析函數(shù)功能算法的過程中,確定算法是否需要知道外界的某些數(shù)據(jù),如果需要,則確定數(shù)據(jù)的類型,并將這些作為函數(shù)的形參,一個函數(shù)可有多個形參。用來接收該函數(shù)被調用時外界傳遞給它的多個數(shù)據(jù)。(3) 確定函數(shù)功能的算法是否有結果需要返回給調用者。若有,是什么值?什么類型;要有正確的返回值。若沒有,則函數(shù)的返回值類型為void。(4) 為函數(shù)確定一個名字,即函數(shù)名,一般最好能夠讓調用者看到函數(shù)名就能夠明白函數(shù)的功能。如,add用來表示實現(xiàn)了加法的功能的函數(shù),swap用來表示交換數(shù)據(jù)的功能的函數(shù)等?!纠?.1】給定n的值,編寫一個求n!的函數(shù)【例5.2】編寫一個函數(shù),判斷某個給定的字符是否為數(shù)字字符。5.2.2函數(shù)的調用函數(shù)調用的格式如下:函數(shù)名(實參列表)5.2.3函數(shù)的聲明函數(shù)原型說明的格式如下:函數(shù)類型函數(shù)名(形參類型說明表);【例5.4】給定兩個整數(shù)a、b,找出a、b之間的所有素數(shù)。在函數(shù)prime的功能是判斷一個數(shù)是否為素數(shù)的功能。5.3函數(shù)的參數(shù)傳遞C++語言提供了三種參數(shù)傳遞機制:值傳遞、地址傳遞和引用傳遞。5.3.1值傳遞C++語言默認的參數(shù)傳遞方式是值傳遞,在值傳遞機制中,一個實參可以是一個表達式。函數(shù)調用時,首先計算各實參表達式的值,然后把實參的計算結果通過類似賦值運算的形式傳給相應的形參,即單向傳遞,只能由實參傳給形參,而不能由形參回傳給實參。5.3.2地址傳遞1.指針變量作為函數(shù)的參數(shù)將指針變量作為函數(shù)參數(shù)時,要求傳遞給函數(shù)的是變量的地址,這種情況稱為地址傳遞。這種傳遞方式,函數(shù)除了用return返回一個值外,還可以通過指針類型的參數(shù)帶回一個或多個值。2.數(shù)組作為函數(shù)的參數(shù)由于數(shù)組名的值為數(shù)組的首元素地址,當把數(shù)組名作為函數(shù)參數(shù)時,其作用與指針變量相同。【例5.7】設計程序,封裝一個函數(shù),利用冒泡排序和直接插入排序法,實現(xiàn)對整型數(shù)組的升序排序。3.二維數(shù)組作為函數(shù)參數(shù)可以把函數(shù)的形參定義成二維數(shù)組形式,必須指定第二維(即列)的大小,且應和實參數(shù)組的第二維大小相同。第一維的大小可以指定,也可以不指定?!纠?.8】編寫函數(shù)計算指定二維數(shù)組所有外圍元素的和。5.3.3引用傳遞當把函數(shù)的形參說明為引用類型時,形參是實參的一個別名,稱為引用傳遞。引用傳遞與地址傳遞類同,可以作為函數(shù)的輸出參數(shù),也可以作為函數(shù)的輸出參數(shù)。使用引用類型的參數(shù)比使用指針類型的參數(shù)更能增加程序的可讀性?!纠?.9】用引用類型作為函數(shù)參數(shù)實現(xiàn)兩個數(shù)據(jù)的交換。5.4函數(shù)與指針5.4.1指針作為返回值一個函數(shù)的返回值類型可以是一個指針類型。通常稱這樣的函數(shù)為指針函數(shù)?!纠?.10】下面的函數(shù)max返回一個一維數(shù)組中最大元素的地址。5.4.2指向函數(shù)的指針變量定義函數(shù)指針的格式為:函數(shù)返回值類型(*函數(shù)指針變量名)(函數(shù)形參數(shù)列表);例如,下面定義了一個函數(shù)指針pf:int(*pf)(int,int);【例5.11】用函數(shù)指針調用函數(shù),實現(xiàn)從兩個數(shù)中輸出較大者。5.5函數(shù)的其他特性5.5.1內聯(lián)函數(shù)C++語言提供了一種稱作“內聯(lián)函數(shù)”的機制。該機制通過將函數(shù)體的代碼直接插入到函數(shù)調用處來節(jié)省調用函數(shù)的時間開銷,這一過程叫做內聯(lián)函數(shù)的擴展。由于在擴展時對函數(shù)的每一次調用均要進行擴展,所以內聯(lián)函數(shù)實際上是一種用空間換時間的方案。5.5.2重載函數(shù)重載函數(shù)是指函數(shù)名相同而實現(xiàn)不同的功能,重載函數(shù)只能通過函數(shù)的參數(shù)的個數(shù)或類型不同來實現(xiàn),即形參類型列表是不同的。5.5.3具有缺省參數(shù)值的函數(shù)C++語言允許在函數(shù)聲明或函數(shù)定義中為參數(shù)預賦一個或多個缺省值,這樣的函數(shù)就叫做帶有缺省參數(shù)的函數(shù)。在調用帶有缺省參數(shù)的函數(shù)時,如果為相應參數(shù)指定了參數(shù)值,則參數(shù)將使用該值;否則參數(shù)使用其缺省值。5.6C++語言的庫函數(shù)C++語言軟件包提供了大量已預先編制的函數(shù),即庫函數(shù)。對于庫函數(shù),用戶不用定義也不用聲明就可直接使用。由于C++語言軟件包將不同功能的庫函數(shù)的函數(shù)原型分別寫在不同的頭文件中,所以,用戶在使用某一庫函數(shù)前,必須用inc1ude預處理指令給出該函數(shù)的原型所在頭文件的文件名。5.7遞歸函數(shù)5.7.1遞歸函數(shù)的定義函數(shù)的調用是可以嵌套的,即一個被調用的函數(shù)在其函數(shù)體內還可以調用其他函數(shù)。嵌套的函數(shù)調用返回時將根據(jù)嵌套層次逐層返回。如果一個函數(shù)在定義的過程中直接或者間接地調用了自己,則該函數(shù)稱為遞歸函數(shù)。直接調用自己為直接遞歸;間接調用自己為間接遞歸。5.7.2遞歸函數(shù)的作用在分析決某些復雜問題時,我們常常采用一種分而治之的設計手段,即把一個問題分解成若干個子問題,而每個子問題的性質與原來問題相同,只是他們的規(guī)模比原問題要小,這時,可以通過對各個子問題進行求分析和綜合來分析決整個問題,而每個子問題的求分析過程也可以采用與原問題相同的分分析與綜合的方式來分析決?!纠?.14】編寫求n!的遞歸函數(shù)。并編寫程序進行測試。5.8變量的生存周期5.8.1變量的作用域塊作用域文件作用域函數(shù)作用域函數(shù)原型作用域5.8.2變量的生存周期1.靜態(tài)存儲期2.動態(tài)存儲期5.8.3變量的存儲類型1.自動類型變量(auto)2.靜態(tài)類型變量(static)3.寄存器類型變量(register)4.外部類型變量(extern)5.9編譯預處理5.9.1文件包含文件包含是指預處理時應將其語句所指定的文件包含進來,即將該文件插入語句處并替代包含文件命令行。格式為: #include"文件名"

或#include<文件名>5.9.2宏定義1.不帶參數(shù)的宏

格式:#define標識符

字符串或常量

溫馨提示

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

最新文檔

評論

0/150

提交評論