資源描述:
《函數(shù)的定義和調(diào)用》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第7講函數(shù)(1)----函數(shù)的定義和調(diào)用主講教師:劉莉E_mail:sjz.lily@163.comPhone:888906927/24/2021計算機與信息工程分院主要內(nèi)容函數(shù)及函數(shù)定義的一般形式1函數(shù)參數(shù)和函數(shù)的值2函數(shù)的調(diào)用3函數(shù)的遞歸調(diào)用5重點函數(shù)的定義的一般形式、函數(shù)參數(shù)傳遞難點函數(shù)的嵌套調(diào)用、函數(shù)的遞歸調(diào)用函數(shù)的嵌套調(diào)用4作業(yè)2計算機與信息工程分院C語言程序設(shè)計1.函數(shù)及函數(shù)定義的一般形式(1)1.1函數(shù)概述一個C程序可由一個主函數(shù)和若干個函數(shù)構(gòu)成。由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用。同一個函數(shù)可以被一個或多個函數(shù)調(diào)用任意多次。示意圖例7-1說明返回主菜單3計
2、算機與信息工程分院C語言程序設(shè)計說明(1)(1)一個源文件由一個或多個函數(shù)組成。一個源程序文件是一個編譯單位,即以源程序為單位進行編譯,而不是以函數(shù)為單位進行編譯。(2)一個C程序由一個或多個源程序文件組成。對較大的程序,一般不希望全放在一個文件中,而將函數(shù)和其他內(nèi)容(如預(yù)定義)分別放在若干個源文件中,再由若干源文件組成一個C程序。這樣可以分別編寫、分別編譯,提高調(diào)試效率。一個源程序可以為多個C程序公用。(3)C程序的執(zhí)行從main函數(shù)開始,調(diào)用其他函數(shù)后流程返回到main函數(shù),在main函數(shù)中結(jié)束整個程序的運行。main函數(shù)是系統(tǒng)定義的。4計算機與信息工程分院C語言程序設(shè)計說明(
3、2)(4)所有函數(shù)都是平行的,即在定義函數(shù)時是相互獨立的,一個函數(shù)并不從屬于另一函數(shù),即函數(shù)不能嵌套定義(這是和PASCAL不同的)。函數(shù)間可以互相調(diào)用,但不能調(diào)用main函數(shù)。(5)從用戶使用的角度看,函數(shù)有兩種:標準函數(shù),即庫函數(shù)。用戶自己定義的函數(shù)。(6)從函數(shù)的形式看,函數(shù)分兩類:無參函數(shù)。在調(diào)用無參函數(shù)時,主調(diào)函數(shù)并將數(shù)據(jù)傳送給被調(diào)用函數(shù),一般用來執(zhí)行指定的一組操作。無參函數(shù)可以帶回或不帶回函數(shù)值,但一般以不帶回函數(shù)值得居多。有參函數(shù)。在調(diào)用函數(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ù)
4、使用。系統(tǒng)自己定義的如例8.1的printstar和print_message5計算機與信息工程分院C語言程序設(shè)計示意圖mainabcdefghhieg6計算機與信息工程分院C語言程序設(shè)計例7.1簡單的函數(shù)調(diào)用main(){printstar();print_message();printstar();}printstar();{printf(“****”);}printf_message();{printf(“Howdoyoudo!”);}調(diào)用printstar函數(shù)調(diào)用print_message函數(shù)調(diào)用printstar函數(shù)調(diào)用printstar函數(shù)調(diào)用print_mes
5、sage函數(shù)程序運行后,結(jié)果顯示:*****************Howdoyoudo!*****************7計算機與信息工程分院C語言程序設(shè)計1.函數(shù)及函數(shù)定義的一般形式(2)1.2函數(shù)定義的一般形式(1)無參函數(shù)的定義形式有參函數(shù)定義的一般形式類型標識符函數(shù)名(){聲明部分語句}類型標識符函數(shù)名(形式參數(shù)表列){聲明部分語句}例如:intmax(intx,inty){intz;z=x>y?x:y;return(z);}8計算機與信息工程分院C語言程序設(shè)計1.函數(shù)及函數(shù)定義的一般形式(3)1.2函數(shù)定義的一般形式(2)可以有”空函數(shù)”對形參聲明的傳統(tǒng)方式例如:du
6、mmy(){}類型說明符函數(shù)名(){}在老版本C語言中,對形參類型的聲明是放在函數(shù)定義的第2行例如:intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}9計算機與信息工程分院C語言程序設(shè)計2.函數(shù)參數(shù)和函數(shù)的值形式參數(shù)和實際參數(shù)在定義函數(shù)時函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”(簡稱“形參”),在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括弧中的參數(shù)(可以是一個表達式)稱為”實際參數(shù)”。函數(shù)的返回值通過函數(shù)調(diào)用使主調(diào)函數(shù)能得到一個確定的值,這就是函數(shù)的返回值。例7-2說明例7-3說明返回主菜單10計算機與信息工程分院C語言程序設(shè)計例7-2調(diào)用函數(shù)時
7、的數(shù)據(jù)傳遞main(){inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“Maxis%d”,c);}max(intx,inty){intz;z=x>y?x:y;return(z);}輸入:7,8結(jié)果:Maxis811計算機與信息工程分院C語言程序設(shè)計關(guān)于形參和實參的說明(1)(1)在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時,它們并不占內(nèi)存中的存儲單元。只有在發(fā)生函數(shù)調(diào)用時,函數(shù)max中的形參才被分配內(nèi)存單元。在調(diào)用結(jié)束后