版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、山東師范大學(xué)歷山學(xué)院山東師范大學(xué)歷山學(xué)院C C語言程序設(shè)計課題組語言程序設(shè)計課題組第八章 函數(shù)本章關(guān)鍵任務(wù):1、把握函數(shù)定義、調(diào)用、表明.2、函數(shù)指標(biāo)傳遞方式領(lǐng)會函數(shù)遞回調(diào)用.3、把握變量作用域、生命期.4、把握插入排序 C語言的函數(shù)C語言的函數(shù)是子程序的總稱,包羅函數(shù)和環(huán)節(jié).(有返回值、無返回值,教材中稱為:有返回值函數(shù),無返回值函數(shù)).C語言函數(shù)能夠分為庫函數(shù)、用戶自定義函數(shù).庫函數(shù)由系統(tǒng)提供,程序員只需要使用(調(diào)用),用戶自定義函數(shù)需要程序員自已編制. 函數(shù)是C語言程序的根基單位 C程序是由函數(shù)構(gòu)成1、一個C源程序到少見諒一個main函數(shù),也能夠見諒一個main函數(shù)和如果干個其它函數(shù).函
2、數(shù)是C程序的根基單位. 2、被調(diào)用的函數(shù)能夠是系統(tǒng)提供的庫函數(shù),也能夠是用戶依照需要自已編寫設(shè)計的函數(shù). 3、C函數(shù)庫非常富厚,ANSI C提供100多個庫函數(shù),Turbo C提供300多個庫函數(shù).main函數(shù)是每個程序履行的起始點一個C程序老是從main函數(shù)最先履行,而不論main函數(shù)在程序中的位置.能夠?qū)ain函數(shù)放在整個程序的最前面,也能夠放在整個程序的末了,大概放在其它函數(shù)之間. 使用函數(shù)的意義1、使用函數(shù)能夠操縱任務(wù)的范圍.使用函數(shù)能夠?qū)⒊绦蚍指顬槿绻晒δ芟鄬Κ氄镜哪K,這些模塊還能夠再分割為更小的模塊,直到各個模塊達(dá)到程序員所能夠操縱的范圍.接著程序員再履行各個模塊的編制.因為
3、各個模塊功能相對獨站,環(huán)節(jié)有限,所以流程簡單操縱,程序簡單編制,修改. 使用函數(shù)的意義2、使用函數(shù)能夠操縱變量的作用范疇.函數(shù)-函數(shù)通過接口(指標(biāo)表,返回值)通訊,交流信息. 使用函數(shù)的意義3、使用函數(shù),程序的開發(fā)能夠由多人分工協(xié)作.將程序分割為如果干模塊(函數(shù)),各個相對獨站的模塊(函數(shù))能夠由多人完成,每個人依照模塊(函數(shù))的功能要求,接口要求編制代碼,調(diào)試,確保每個模塊(函數(shù))的精確性.末了將全部模塊(函數(shù))合同時,同一調(diào)試、運行. 使用函數(shù)的意義4、使用函數(shù),能夠再一次操縱已有的、調(diào)式好的、成熟的程序模塊 .函數(shù)的一樣形式函數(shù)的組成一個函數(shù)(定義)由函數(shù)頭(函數(shù)首部)和函數(shù)體兩部分組成
4、 函數(shù)頭 函數(shù)頭(首部):講明了函數(shù)類型、函數(shù)標(biāo)題及指標(biāo).函數(shù)類型:函數(shù)返回值的信息類型,能夠是根基信息類型也能夠是組織類型.似果省略默信任int,似果不返回值,定義為void類型. 函數(shù)頭函數(shù)名:給函數(shù)取的名字,往后用那個名字調(diào)用.函數(shù)名由用戶命名,命名法那么同標(biāo)識符. 函數(shù)名背面是指標(biāo)表,無參函數(shù)沒有指標(biāo)傳遞,但“()”號不能省略,這是標(biāo)準(zhǔn)的規(guī)定.指標(biāo)表講明指標(biāo)的類型和形式指標(biāo)的標(biāo)題,各個形式指標(biāo)用“,”分隔. 函數(shù)體 函數(shù)體:函數(shù)首部下用一對括起來的部分.似果函數(shù)體內(nèi)有多個,最外層是函數(shù)體的范疇.函數(shù)體一樣包羅:(1)表明部分:在這部分定義本函數(shù)所使用的變量和履行有關(guān)表明(似函數(shù)表明).
5、(2)履行部分:程序段,由如果干條語句組成號令序列(能夠在其中調(diào)用其它函數(shù)).函數(shù)舉例例8-1:輸入三個整數(shù),求三個整數(shù)中的最大值,打印. 不使用函數(shù)解決使用函數(shù)解決函數(shù)的指標(biāo) 函數(shù)的指標(biāo)包羅形式指標(biāo)與現(xiàn)實指標(biāo).形式指標(biāo)(形參)形式指標(biāo)(形參):函數(shù)定義時設(shè)定的指標(biāo).例8-1中,函數(shù)頭int max(int x,int y,int z)中x,y,z便是形參,它們的類型根基上整型. 現(xiàn)實指標(biāo)(實參)現(xiàn)實指標(biāo)(實參):調(diào)用函數(shù)時所使用的現(xiàn)實的指標(biāo).例8-1中,主函數(shù)中調(diào)用max函數(shù)的語句是:nmax=max(n1,n2,n3); 其中n1,n2,n3便是實參,它們的類型根基上整型. 指標(biāo)的傳遞 在
6、調(diào)用函數(shù)時,主調(diào)函數(shù)和被調(diào)函數(shù)之間有信息的傳遞-實參傳遞給形參.具體的傳遞方式有兩種:(1)值傳遞方式(傳值):將實參單向傳遞給形參的一種方式. (2)地址傳遞方式(傳值):將實參地址單向傳遞給形參的一種方式. 注重單向傳遞:不管“傳值”、仍是“傳址”,C語言根基上單向傳遞信息的,必然是實參傳遞給形參,反過來不可.也便是講C語言中函數(shù)指標(biāo)傳遞的兩種方式本質(zhì)一樣-“單向傳遞”. 注重“傳值”、“傳址”只是傳遞的信息類型差別(傳值-一樣的數(shù)值,傳址-地址).傳址現(xiàn)實是傳值方式的一個特例,本質(zhì)仍是傳值,只是此刻傳遞的是一個地址信息值. 注重系統(tǒng)安排給實參、形參的內(nèi)存單元是差別的,也便是講縱然在函數(shù)中
7、修改了形參的值,也不大概作用實參的值. 注重對傳值,縱然函數(shù)中修改了形參的值,也不大概作用實參的值. 對傳址,縱然函數(shù)中修改了形參的值,也不大概作用實參的值.但是,注重:不大概作用實參的值,不等于不作用實參指向的信息. 注重傳址與傳值一樣不能通過指標(biāo)返回信息,但因為傳遞的是地址,那么便大概通過實參指標(biāo)所指向的空間間接返回數(shù)值.兩種指標(biāo)傳遞方式中,實參能夠是變量、常量、表達(dá)式;形參一樣是變量,要求兩者類型一樣或賦值兼容. 示意圖函數(shù)的返回值C語言能夠從函數(shù)(被調(diào)用函數(shù))返回值給調(diào)用函數(shù)(這與數(shù)學(xué)函數(shù)相當(dāng)類似).在函數(shù)內(nèi)是通過return語句返回值的.使用return語句能夠返回一個值或不返回值(
8、此刻函數(shù)類型是void). return語句的標(biāo)準(zhǔn):return 表達(dá)式;或return (表達(dá)式); 講明 1、函數(shù)的類型便是返回值的類型,return語句中表達(dá)式的類型應(yīng)該與函數(shù)類型一致.似果不一致,以函數(shù)類型為準(zhǔn)(賦值轉(zhuǎn)化). 2、函數(shù)類型省略,默信任int. 3、似果函數(shù)沒有返回值,函數(shù)類型應(yīng)當(dāng)講明為void(無類型). 函數(shù)的調(diào)用方式 函數(shù)調(diào)用的一樣方式:函數(shù)名(實參表列); 講明1、無參函數(shù)調(diào)用沒有指標(biāo),但是“()”不能省略,有參函數(shù)如果見諒多個指標(biāo),各指標(biāo)用“,”分隔,實參指標(biāo)個數(shù)與形參指標(biāo)個數(shù)一樣,類型一致或賦值兼容. 講明2、以單獨語句形式調(diào)用(注重背面要加一個分號,構(gòu)成語句
9、).以語句形式調(diào)用的函數(shù)能夠有返回值,也能夠沒有返回值.例似:printf(“max=%d”,nmax);swap(x,y);puts(s);講明3、在表達(dá)式中調(diào)用(背面沒有分號).在表達(dá)式中的函數(shù)調(diào)用必須有返回值.例似:if(strcmp(s1,s2)0)函數(shù)調(diào)用strcmp()在關(guān)系表達(dá)式中.nmax=max(n1,n2,n3) ; 函數(shù)調(diào)用max()在賦值表達(dá)式中,“;”是賦值表達(dá)式做為語句時加的,不是max函數(shù)調(diào)用的.fun1(fun2(); 函數(shù)調(diào)用fun2()在函數(shù)調(diào)用表達(dá)式fun1()中.函數(shù)調(diào)用fun2()的返回值做為fun1的指標(biāo).函數(shù)調(diào)用時信息的傳遞(函數(shù)之間的通訊)函數(shù)是
10、相對獨站的,但是不是獨站的,它們通過調(diào)用時1)指標(biāo)傳遞和2)函數(shù)的返回值3)全局變量(背面講解)來彼此聯(lián)系. 函數(shù)的表明函數(shù)定義的位置能夠1)在調(diào)用它的函數(shù)之前,也能夠2)在調(diào)用它的函數(shù)之后,甚到位于3)其它的源程序模塊中.l 函數(shù)定義位置在前,函數(shù)調(diào)用在后,不必表明,編譯程序產(chǎn)生精確的調(diào)用標(biāo)準(zhǔn).函數(shù)定義在調(diào)用它的函數(shù)之后大概函數(shù)在其它源程序模塊中,且函數(shù)類型不是整型,這時,為了使編譯程序產(chǎn)生精確的調(diào)用標(biāo)準(zhǔn),能夠在函數(shù)使用前對函數(shù)履行表明.如此不管函數(shù)在啥位置,編譯程序都能產(chǎn)生精確的調(diào)用標(biāo)準(zhǔn). 函數(shù)表明的標(biāo)準(zhǔn) 函數(shù)類型 函數(shù)名(指標(biāo)類型,指標(biāo)類型); C語言的庫函數(shù)便是位于其它模塊的函數(shù),為了
11、精確調(diào)用,C編譯系統(tǒng)提供了相應(yīng)的.h文件.h文件內(nèi)很多根基上函數(shù)表明,當(dāng)源程序要使用庫函數(shù)時,便應(yīng)當(dāng)見諒相應(yīng)的頭文件. 函數(shù)的嵌套調(diào)用 函數(shù)嵌套調(diào)用:函數(shù)調(diào)用中又存在調(diào)用.似函數(shù)1調(diào)用函數(shù)2,函數(shù)又調(diào)用函數(shù)3.函數(shù)之間沒有從屬關(guān)系,一個函數(shù)能夠被其它函數(shù)調(diào)用,同時該函數(shù)也能夠調(diào)用其它函數(shù). 函數(shù)的遞回調(diào)用函數(shù)的遞回調(diào)用:是指函數(shù)直截了當(dāng)調(diào)用或間接調(diào)用自已,或調(diào)用一個函數(shù)的環(huán)節(jié)中表現(xiàn)直截了當(dāng)或間接調(diào)用該函數(shù)自身.前者稱為直截了當(dāng)遞回調(diào)用,后者稱為間接遞回調(diào)用. 遞回調(diào)用環(huán)節(jié)(兩個期間) 1、遞推期間:將原咨詢題接續(xù)地分化為新的子咨詢題,追漸從未知的向已知的方向猜測,終極達(dá)到已知的前提,即遞回結(jié)束
12、前提,這時遞推期間結(jié)束. 2、回回期間:從已知前提出發(fā),依照“遞推”的逆環(huán)節(jié),追一求值回回,終極到達(dá)“遞推”的最先處,結(jié)束回回期間,完成遞回調(diào)用. 遞回實例例8-7:用遞回法求n! .解:n!=n*(n-1)*(n-2)*1=n(n-1)!.遞回程式: 1 n0,1n!= n*(n-1)! 其它變量的作用域變量的作用域:變量的有效范疇大概變量的可見性.變量定義的位置決意了變量的作用域. 變量的分類變量從作用域(變量的有效范疇,可見性)的角度能夠分為:局部變量,全局變量. 局部變量 局部變量:是指在必然范疇內(nèi)有效的變量.C語言中,在以下列位置定義的變量均屬于局部變量.(1)在函數(shù)體內(nèi)定義的變量,
13、在本函數(shù)范疇內(nèi)有效,作用域局限于函數(shù)體內(nèi).(2)在復(fù)合語句內(nèi)定義的變量,在本復(fù)合語句范疇內(nèi)有效,作用域局限于復(fù)合語句內(nèi).(3)有參函數(shù)的形式指標(biāo)也是局部變量,只在其所在的函數(shù)范疇內(nèi)有效. 局部變量舉例講明1、差別函數(shù)中和差別的復(fù)合語句中能夠定義(使用)同名變量.因為它們作用域差別,程序運行時在內(nèi)存中占據(jù)差別的存儲單元,各自代表差別的對象,所以它們互不干預(yù).即:同名,差別作用域的變量是差別的變量. 講明2、局部變量所在的函數(shù)被調(diào)用或履行時,系統(tǒng)臨時給相應(yīng)的局部變量安排存儲單元,一旦函數(shù)履行結(jié)束,那么系統(tǒng)站即釋放這些存儲單元.所以在各個函數(shù)中的局部變量起作用的時候是差別的. 全局變量 全局變量:在
14、函數(shù)之外定義的變量.(全部函數(shù)前,各個函數(shù)之間,全部函數(shù)后)全局變量作用域:從定義全局變量的位置起到本源程序結(jié)束為止. 講明1、在引用全局變量時似果使用“extern”表明全局變量,能夠張大全局變量的作用域.例似,張大到整個源文件(模塊),對多源文件(模塊)能夠張大到其它源文件(模塊).2、在定義全局變量時似果使用修飾關(guān)鍵詞static,示意此全局變量作用域僅限于本源文件(模塊). 全局變量舉例全局變量舉例全局變量舉例講明1、全局變量能夠和局部變量同名,當(dāng)局部變量有效時,同名全局變量不起作用. 2、使用全局變量能夠增加各個函數(shù)之間的信息傳輸渠道,在一個函數(shù)中改變一個全局變量的值,在另外的函數(shù)中
15、便能夠操縱.但是,使用全局變量使函數(shù)的通用性落低,使程序的模塊化、結(jié)構(gòu)化變差,所以要慎用、少用全局變量. 變量的存儲類不(生活期、生命期) 從變量存在的時候的長短(即變量生活期)來分割,變量還能夠分為:動態(tài)存儲變量、靜態(tài)存儲變量.變量的存儲方式?jīng)Q意了變量的生活期. C語言變量的存儲方式能夠分為:動態(tài)存儲方式、靜態(tài)存儲方式. 示意圖動態(tài)存儲方式 動態(tài)存儲方式:在程序運行期間依照需要為相關(guān)的變量動態(tài)安排存儲空間的方式.C語言中,變量的動態(tài)存儲方式關(guān)鍵有自動型存儲方式和寄存器型存儲方式. 自動型存儲方式(auto) auto型存儲方式是C語言默認(rèn)的局部變量的存儲方式,也是局部變量最常使用的存儲方式.
16、講明1、自動變量屬于局部變量的范疇,作用域限于定義它的函數(shù)或復(fù)合語句內(nèi). 2、自動變量所在的函數(shù)或復(fù)合語句履行時,系統(tǒng)動態(tài)為相應(yīng)的自動變量安排存儲單元,當(dāng)自動變量所在的函數(shù)或復(fù)合語句履行結(jié)束后,自動變量失效,它所在的存儲單元被系統(tǒng)釋放,所以原來的自動變量的值不能保留下來.如果對同一函數(shù)再次調(diào)用時,系統(tǒng)會對相應(yīng)的自動變量再一次安排存儲單元. 寄存器型存儲方式(register) register型存儲方式是C語言使用較少的一種局部變量的存儲方式.該方式將局部變量存儲在CPU的寄存器中,寄存器比內(nèi)存操縱要快非常多,所以能夠?qū)⒉糠中枰磸?fù)操縱的局部變量存放在寄存器中. 寄存器(局部變量)的定義標(biāo)準(zhǔn):
17、其中:register為寄存器存儲類不關(guān)鍵詞,不能省略. 注重 CPU的寄存器數(shù)量有限,似果定義了過多的register變量,系統(tǒng)會自動將其中的部分改為auto型變量. 靜態(tài)存儲方式 靜態(tài)存儲方式:在程序編譯時便給相關(guān)的變量安排固定的存儲空間(在程序運行的整個期間內(nèi)都不變)的存儲方式.C語言中,使用靜態(tài)存儲方式的關(guān)鍵有靜態(tài)存儲的局部變量和全局變量. 靜態(tài)存儲的局部變量講明1、靜態(tài)局部變量的存儲空間是在程序編譯時由系統(tǒng)安排的,且在程序運行的整個期間都固定不變.該類變量在其函數(shù)調(diào)用結(jié)束后仍舊能夠保留變量值.下次調(diào)用該函數(shù),靜態(tài)局部變量中仍保留上次調(diào)用結(jié)束時的值. 講明2、靜態(tài)局部變量的初值是在程序
18、編譯時一次性賦予的,在程序運行期間不再賦初值,往后如果改變了值,保留末了一次改變后的值,直到程序運行結(jié)束. 全局變量全部是靜態(tài)存儲的 C語言中,全局變量的存儲根基上采納靜態(tài)存儲方式,即在編譯時便為相應(yīng)全局變量安排了固定的存儲單元,且在程序履行的全環(huán)節(jié)始終連結(jié)不變.全局變量賦初值也是在廉價時完成的.因為全局變量全部是靜態(tài)存儲,所以沒有必要為講明全局變量是靜態(tài)存儲而使用關(guān)鍵詞static.全局變量的extern表明及令人困惑的全局變量的static定義全局變量的static定義,不是講明“此全局變量要用靜態(tài)方式存儲”(全局變量天生全部是靜態(tài)存儲),而是講,那個全局變量只在本源程序模塊有效(文件作用域). 全局變量的extern表明及令人困惑的全局變量的static定義似果沒有
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版全新泥水工合同協(xié)議下載
- 2025年度智能場館租賃合同中保證金與押金管理細(xì)則3篇
- 2025年網(wǎng)絡(luò)投票系統(tǒng)開發(fā)與運營合同范本3篇
- 2025年度特色餐飲文化體驗館租賃經(jīng)營合同3篇
- 2025年教育機(jī)構(gòu)安保人員勞動合同范本2篇
- 二零二五版飯店租賃合同合同履行監(jiān)督與評估機(jī)制2篇
- 2025年度大數(shù)據(jù)中心建設(shè)合同擔(dān)保協(xié)議書范本2篇
- 2024年規(guī)范化消石灰銷售協(xié)議模板版B版
- 二零二五版智慧城市建設(shè)監(jiān)理團(tuán)隊聘用合同3篇
- 2024美容院部分股份轉(zhuǎn)讓協(xié)議書
- SH/T 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范(正式版)
- 2024年海口市選調(diào)生考試(行政職業(yè)能力測驗)綜合能力測試題及答案1套
- 六年級數(shù)學(xué)質(zhì)量分析及改進(jìn)措施
- 一年級下冊數(shù)學(xué)口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫大全-下(多選題部分)
- 真人cs基于信號發(fā)射的激光武器設(shè)計
- 【閱讀提升】部編版語文五年級下冊第三單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 四年級上冊遞等式計算練習(xí)200題及答案
- 法院后勤部門述職報告
- 2024年國信證券招聘筆試參考題庫附帶答案詳解
- 道醫(yī)館可行性報告
評論
0/150
提交評論