C教程-從入門(mén)到精通-chap04_第1頁(yè)
C教程-從入門(mén)到精通-chap04_第2頁(yè)
C教程-從入門(mén)到精通-chap04_第3頁(yè)
C教程-從入門(mén)到精通-chap04_第4頁(yè)
C教程-從入門(mén)到精通-chap04_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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)介

函數(shù)函數(shù)的定義函數(shù)的調(diào)用函數(shù)的參數(shù)與函數(shù)的返回值函數(shù)的嵌套調(diào)用與遞歸調(diào)用局部變量和全局變量存儲(chǔ)類別 函數(shù)原型第1頁(yè)/共40頁(yè)函數(shù)函數(shù)是由基本語(yǔ)句組成的、可以完成特定功能的例程。函數(shù)是構(gòu)成C++程序的基本單位,一個(gè)C++程序就是一個(gè)或若干個(gè)函數(shù)的集合。函數(shù)通??梢苑譃閮煞N:一種是C++提供的標(biāo)準(zhǔn)函數(shù),或者稱庫(kù)函數(shù),是C++提供的函數(shù),用戶不用定義就可以使用;另一種是用戶自己定義的函數(shù),用于解決用戶自己的問(wèn)題。第2頁(yè)/共40頁(yè)函數(shù)的定義數(shù)據(jù)類型函數(shù)名(形式參數(shù)列表){聲明部分 語(yǔ)句}第3頁(yè)/共40頁(yè)函數(shù)的調(diào)用調(diào)用一個(gè)函數(shù)的方法是指明這個(gè)函數(shù)的函數(shù)名,如果函數(shù)的定義中包括形參的話,那么須要在后面的括號(hào)中寫(xiě)出傳給這些形參的值。第4頁(yè)/共40頁(yè)函數(shù)調(diào)用第5頁(yè)/共40頁(yè)形式參數(shù)和實(shí)際參數(shù)定義函數(shù)時(shí)定義的參數(shù)是形式參數(shù)在定義函數(shù)時(shí),雖然定義了函數(shù)的形式參數(shù),但是這些參數(shù)在沒(méi)有被其他函數(shù)調(diào)用時(shí)并不在內(nèi)存中分配存儲(chǔ)單元,而是在被調(diào)用時(shí)才分配,函數(shù)調(diào)用結(jié)束時(shí)它所占用的內(nèi)存單元被立即回收。因此在函數(shù)沒(méi)有被調(diào)用時(shí)這些參數(shù)只是形式上存在,所以稱之為形式參數(shù)函數(shù)調(diào)用時(shí)使用的參數(shù)是實(shí)際參數(shù)第6頁(yè)/共40頁(yè)值傳遞指在函數(shù)調(diào)用時(shí),實(shí)參的值會(huì)被復(fù)制到形參中。由于函數(shù)調(diào)用時(shí)函數(shù)的形參和實(shí)參并不占用同樣的存儲(chǔ)單元,因此在這種情況下實(shí)參的值是被復(fù)制到形參中的,因此稱為“值傳遞”第7頁(yè)/共40頁(yè)改寫(xiě)max函數(shù)以解釋形參和實(shí)參之間的值傳遞關(guān)系第8頁(yè)/共40頁(yè)編寫(xiě)swap函數(shù)以解釋形參和實(shí)參之間的值傳遞關(guān)系第9頁(yè)/共40頁(yè)函數(shù)的返回值在調(diào)用函數(shù)時(shí)能夠通過(guò)函數(shù)體的return語(yǔ)句從函數(shù)中獲得一個(gè)返回值。有些函數(shù)只是實(shí)現(xiàn)一些操作,不需要返回值,這樣函數(shù)的函數(shù)體中就沒(méi)有return語(yǔ)句,定義函數(shù)時(shí)也指明這個(gè)函數(shù)的返回值類型是void。第10頁(yè)/共40頁(yè)函數(shù)值的數(shù)據(jù)類型與返回值的數(shù)據(jù)類型不一致第11頁(yè)/共40頁(yè)函數(shù)嵌套調(diào)用在C++中,不允許函數(shù)嵌套定義。C++中允許函數(shù)嵌套調(diào)用允許在定義一個(gè)函數(shù)時(shí)函數(shù)體中存在對(duì)另一個(gè)函數(shù)的調(diào)用。第12頁(yè)/共40頁(yè)根據(jù)x的輸入求函數(shù)f(x)的值f(x)=2g(x)2+(3g(x)+7)1/2g(x)=(65x3+7X2-8)/x2-3第13頁(yè)/共40頁(yè)函數(shù)的遞歸調(diào)用一個(gè)函數(shù)直接地或者間接地調(diào)用這個(gè)函數(shù)本身第14頁(yè)/共40頁(yè)如果有下面的函數(shù)定義,求f(x)的值。已知f(0)=5,且f(x)=3*f(x-1)+6第15頁(yè)/共40頁(yè)執(zhí)行流程第16頁(yè)/共40頁(yè)用遞歸的方法求n!第17頁(yè)/共40頁(yè)局部變量局部變量是指在一個(gè)代碼塊內(nèi)部定義的變量。局部變量的作用范圍就是定義這個(gè)變量所處的代碼塊,在此代碼塊外無(wú)法使用這個(gè)變量。由于這種變量的有效范圍是局部的,所以稱之為局部變量。只要是用一對(duì){}括起來(lái)的代碼都可以稱為代碼塊。一個(gè)函數(shù)的函數(shù)體部分是一個(gè)代碼塊一個(gè)復(fù)合語(yǔ)句也是一個(gè)代碼塊第18頁(yè)/共40頁(yè)局部變量的使用第19頁(yè)/共40頁(yè)全局變量全局變量定義在所有函數(shù)之外,因此所有函數(shù)都可以訪問(wèn)全局變量,作用范圍是整個(gè)程序。建議盡量減少使用全局變量第20頁(yè)/共40頁(yè)全局變量的使用第21頁(yè)/共40頁(yè)存儲(chǔ)類別一個(gè)變量的存儲(chǔ)類別可以決定程序在執(zhí)行時(shí)給這個(gè)變量分配什么樣的存儲(chǔ)空間在C++中,有4種常用存儲(chǔ)類別說(shuō)明符autoexternregisterstatic第22頁(yè)/共40頁(yè)auto存儲(chǔ)類型在C++中,如果不特別說(shuō)明,所有的局部變量都是auto存儲(chǔ)類型的變量。auto存儲(chǔ)類型的變量保存在動(dòng)態(tài)存儲(chǔ)區(qū)中,在定義它的代碼塊執(zhí)行時(shí)分配存儲(chǔ)空間,在代碼塊執(zhí)行結(jié)束之后釋放存儲(chǔ)空間。auto數(shù)據(jù)類型變量列表;第23頁(yè)/共40頁(yè)用extern聲明全局變量如果需要把代碼寫(xiě)在兩個(gè)或兩個(gè)以上的文件中時(shí),如果要定義全局變量,C++采用在一個(gè)文件中定義應(yīng)用的全部全局變量,而在另一個(gè)文件中使用extern關(guān)鍵字指明這些變量的定義在其他的文件中,這樣編譯器在看到用extern關(guān)鍵字修飾的變量時(shí)就不再為這些變量分配存儲(chǔ)空間。第24頁(yè)/共40頁(yè)使用extern聲明全局變量第25頁(yè)/共40頁(yè)static存儲(chǔ)類型如果希望局部變量在定義它的代碼塊執(zhí)行完之后不被銷毀,而是與全局變量一樣一直保留其內(nèi)存空間,那么就可以定義這個(gè)變量為static存儲(chǔ)類型。系統(tǒng)會(huì)為static存儲(chǔ)類型的變量分配靜態(tài)存儲(chǔ)區(qū)中的內(nèi)存空間。由于在代碼塊執(zhí)行完之后這個(gè)變量仍然存在,因此如果再次調(diào)用這個(gè)代碼塊時(shí),上次調(diào)用這個(gè)變量的值仍然存在。staticinti;第26頁(yè)/共40頁(yè)求1~10的階乘第27頁(yè)/共40頁(yè)

register存儲(chǔ)類型在C++中可以使用register關(guān)鍵字定義變量,作用是告知編譯器這個(gè)變量將使用一個(gè)寄存器來(lái)保存,而不是使用內(nèi)存空間來(lái)保存。registerinti;第28頁(yè)/共40頁(yè)函數(shù)原型函數(shù)的聲明和函數(shù)的定義定義函數(shù)是指說(shuō)明函數(shù)的函數(shù)名、返回值、形參以及函數(shù)體的內(nèi)容函數(shù)的聲明則只要求說(shuō)明函數(shù)的函數(shù)名、返回值、形參就可以了聲明函數(shù)就要使用函數(shù)原型。函數(shù)原型會(huì)指明一個(gè)函數(shù)的函數(shù)名、函數(shù)的參數(shù)個(gè)數(shù)、函數(shù)參數(shù)的數(shù)據(jù)類型、函數(shù)的返回值類型。在函數(shù)原型中,還可以指定所有形式參數(shù)的名字,但這并不是必須的第29頁(yè)/共40頁(yè)使用函數(shù)原型聲明函數(shù)第30頁(yè)/共40頁(yè)預(yù)處理命令宏定義文件包含 條件編譯第31頁(yè)/共40頁(yè)預(yù)處理命令編譯器在對(duì)程序開(kāi)始正式編譯之前會(huì)對(duì)程序中的預(yù)處理命令進(jìn)行預(yù)處理,預(yù)處理過(guò)程中處理的這些命令就是預(yù)處理命令。預(yù)處理命令不是C++語(yǔ)言的一部分,這些命令的主要作用是改進(jìn)程序設(shè)計(jì)環(huán)境,提高程序設(shè)計(jì)效率。C++的預(yù)處理命令包括宏定義命令文件包含命令條件編譯命令第32頁(yè)/共40頁(yè)宏定義命令#define宏名字符串在編譯時(shí),在程序語(yǔ)句中只要遇到“宏名”就會(huì)用后面的“字符串”來(lái)替代。這個(gè)過(guò)程稱為“宏展開(kāi)”。#definePI3.1415#definePI3.A1415C++中還允許定義帶參數(shù)的宏。#defineMIN(a,b)(((a)<(b))?a:b)第33頁(yè)/共40頁(yè)計(jì)算一個(gè)圓的周長(zhǎng)和面積第34頁(yè)/共40頁(yè)文件包含使用文件包含命令的文件可以把這個(gè)命令所指定文件的全部?jī)?nèi)容包含到本文件中來(lái)。#include"文件名"或者#include<文件名>第35頁(yè)/共40頁(yè)條件編譯C++中允許根據(jù)特定的情況對(duì)部分代碼進(jìn)行編譯。由于這種編譯是根據(jù)指定的條件進(jìn)行的,所以稱為條件編譯。第36頁(yè)/共40頁(yè)第一種表述形式 #if表達(dá)式代碼段1 #else代碼段2 #endif第37

溫馨提示

  • 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)論