版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
函數(shù)汽車計算機基礎一、課程導入如果把編程比做制造一臺機器,函數(shù)就好比其零部件。可將這些“零部件”單獨設計、調(diào)試、測試好,用時拿出來裝配,再整體調(diào)試。這些“零部件”可以是自己設計制造、別人設計制造或者現(xiàn)在的標準產(chǎn)品。使用函數(shù)便于實現(xiàn)模塊化設計,便于團隊開發(fā),便于使用現(xiàn)有的或別人的程序模塊提高編程效能。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)一、課程導入什么是函數(shù)?為什么要使用函數(shù)?函數(shù)有哪些類型?如何自己定義一個函數(shù)?如何調(diào)用一個函數(shù)?函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)二、函數(shù)的概念與類型2.1函數(shù)的概念函數(shù)就是一段可以重復調(diào)用的、功能相對獨立完整的程序模塊,可以定義自己的變量(僅在本函數(shù)內(nèi)有效)擁有自己的存儲空間。可以被其他函數(shù)或自身調(diào)用(主函數(shù)除外)。函數(shù)是程序的基本組成單位,可以用函數(shù)作為程序模塊來實現(xiàn)C語言程序。利用函數(shù)不僅可以使程序模塊化,而且可以使程序設計的簡單和直觀,提高程序的可讀性和可維護性。還可以把程序中的一些計算編成通用函數(shù),以供隨時使用。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)二、函數(shù)的概念與類型2.2函數(shù)的類型(1)從用戶使用的角度看,函數(shù)有兩種類型,分別為標準庫函數(shù)和用戶自己定義的函數(shù)。庫函數(shù)在不同的頭文件中聲明。比如:math.h頭文件中有:sin(x),cos(x),exp(x)(求e^x),fabs(x)(求x的絕對值)等庫函數(shù)。stdio.h頭文件中有:scanf(),printf(),gets(),puts(),getchar(),putchar()等庫函數(shù)。string.h頭文件中有:strcmp(),strcpy(),strcat(),strlen等庫函數(shù)。(2)函數(shù)可以接收用戶傳遞的數(shù)據(jù),也可以不接收。接收用戶數(shù)據(jù)的函數(shù)在定義時要指明參數(shù),不接收用戶數(shù)據(jù)的不需要指明,根據(jù)這一點可以將函數(shù)分為有參函數(shù)和無參函數(shù)。標準庫函數(shù):在C頭文件中聲明的函數(shù)(I/O函數(shù),字符串,字符處理函數(shù),數(shù)學函數(shù),接口函數(shù),時間轉(zhuǎn)換和操作函數(shù),動態(tài)地址分配函數(shù),目錄函數(shù),過程控制函數(shù),字符屏幕和圖形功能函數(shù)。)戶定義的函數(shù):C程序員自定義的函數(shù)函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)三、用戶函數(shù)的定義與調(diào)用函數(shù)定義即函數(shù)的實現(xiàn),是對所要完成功能的操作進行描述的過程,包括函數(shù)命名和返回值類型聲明、形式參數(shù)的類型說明、變量說明和一系列操作語句等。函數(shù)和變量一樣,必須“先定義,后使用”。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)三、用戶函數(shù)的定義與使用3.1無參函數(shù)的定義無參函數(shù),是指在主調(diào)函數(shù)調(diào)用被調(diào)函數(shù)時,主調(diào)函數(shù)不向被調(diào)函數(shù)傳遞數(shù)據(jù)。無參函數(shù)一般用來執(zhí)行特定的功能,可以有返回值,也可以沒有返回值,但一般以沒有返回值居多。定義無參函數(shù)的一般形式:類型標識符是返回值類型,它可以是C語言中的任意數(shù)據(jù)類型,例如int、float、char等。函數(shù)名是標識符的一種,命名規(guī)則和標識符相同。函數(shù)名后面的括號()不能少。函數(shù)體是函數(shù)需要執(zhí)行的代碼,是函數(shù)的主體部分。即使只有一個語句,函數(shù)體也要由{}包圍。如果有返回值,在函數(shù)體中使用return語句返回。return出來的數(shù)據(jù)的類型要和類型標識符一樣。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)三、用戶函數(shù)的定義與使用3.1無參函數(shù)的定義例如:定義一個函數(shù),計算從1加到100的結(jié)果:累加結(jié)果保存在變量sum中,最后通過return語句返回。sum是int型,返回值也是int類型,它們一一對應。return是C語言中的一個關鍵字,只能用在函數(shù)中,用來返回處理結(jié)果。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)三、用戶函數(shù)的定義與使用3.1無參函數(shù)的定義將上面的代碼補充完整:C語言不允許函數(shù)嵌套定義,也就是說,不能在一個函數(shù)中定義另外一個函數(shù),必須在所有函數(shù)之外定義另外一個函數(shù)。main()也是一個函數(shù)定義,也不能在main()函數(shù)內(nèi)部定義新函數(shù)。所以要將sum放在main外面。函數(shù)必須先定義后使用,所以sum要放在main前面。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)三、用戶函數(shù)的定義與使用3.1無參函數(shù)的定義無返回值函數(shù):有的函數(shù)不需要返回值,或者返回值類型不確定(很少見),那么可以用void表示,例如:void是C語言中的一個關鍵字,表示“空類型”或“無類型”,絕大部分情況下也就意味著沒有return語句。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)三、用戶函數(shù)的定義與使用3.2有參函數(shù)的定義有參函數(shù),是指在主調(diào)函數(shù)調(diào)用被調(diào)函數(shù)時,主調(diào)函數(shù)通過參數(shù)向被調(diào)函數(shù)傳遞數(shù)據(jù)。在一般情況下,有參函數(shù)在執(zhí)行被調(diào)函數(shù)時會得到一個值并返回給主調(diào)函數(shù)使用。定義有參函數(shù)的一般形式為:參數(shù)本質(zhì)上也是變量,定義時要指明類型和名稱。與無參函數(shù)的定義相比,有參函數(shù)的定義僅僅是多了一個參數(shù)列表。數(shù)據(jù)通過參數(shù)傳遞到函數(shù)內(nèi)部進行處理,處理完成以后再通過返回值告知函數(shù)外部。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)三、用戶函數(shù)的定義與使用3.2有參函數(shù)的定義例如:函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)四、函數(shù)的參數(shù)和返回值4.1函數(shù)的參數(shù)形參:在函數(shù)定義中出現(xiàn)的參數(shù)可以看做是一個占位符,它沒有數(shù)據(jù),只能等到函數(shù)被調(diào)用時接收傳遞進來的數(shù)據(jù)。實參:函數(shù)被調(diào)用時給出的參數(shù)包含了實實在在的數(shù)據(jù),會被函數(shù)內(nèi)部的代碼使用。C語言中,實參變量和與其對應的形參變量各占用獨立的存儲單元。形參和實參的功能是傳遞數(shù)據(jù),發(fā)生函數(shù)調(diào)用時,實參的值會傳遞給形參。形參和實參有以下幾個特點:形參變量只有在函數(shù)被調(diào)用時才會分配內(nèi)存,調(diào)用結(jié)束后,立刻釋放內(nèi)存。實參可以是常量、變量、表達式、函數(shù)等。實參和形參在數(shù)量上、類型上、順序上必須嚴格一致,否則會發(fā)生“類型不匹配”的錯誤。函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳遞是單向的,只能把實參的值傳遞給形參,而不能把形參的值反向地傳遞給實參函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)四、函數(shù)的參數(shù)和返回值4.1函數(shù)的參數(shù)請看下面的例子:函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)四、函數(shù)的參數(shù)和返回值4.2函數(shù)的返回值函數(shù)的返回值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的代碼所得到的結(jié)果,這個結(jié)果通過return語句返回。return語句將被調(diào)用函數(shù)中的一個確定值返回給主調(diào)函數(shù)。C語言規(guī)定,函數(shù)返回值的類型是由函數(shù)首部定義的類型決定。函數(shù)返回值應與首部定義的類型一致,如若不一致,則自動將返回值強制轉(zhuǎn)換為函數(shù)首部定義的類型。沒有定義類型時默認為int型。return語句的一般形式為:例如:函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)四、函數(shù)的參數(shù)和返回值4.2函數(shù)的返回值C語言返回值的說明如下:(1)沒有返回值的函數(shù)為空類型,用void表示。例如:一旦函數(shù)的返回值類型被定義為void,就不能再接收它的值了。例如,下面的語句是錯誤的:為了使程序有良好的可讀性并減少出錯,凡不要求返回值的函數(shù)都應定義為void類型?!梁瘮?shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)四、函數(shù)的參數(shù)和返回值4.2函數(shù)的返回值(2)return語句可以有多個,可以出現(xiàn)在函數(shù)體的任意位置,但是每次調(diào)用函數(shù)只能有一個return語句被執(zhí)行,所以只有一個返回值。例如:如果a>b成立,就執(zhí)行returna,returnb不會執(zhí)行;如果不成立,就執(zhí)行returnb,returna不會執(zhí)行。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)四、函數(shù)的參數(shù)和返回值4.2函數(shù)的返回值(2)函數(shù)一旦遇到return語句就立即返回,后面的所有語句都不會被執(zhí)行到了。從這個角度看,return語句還有強制結(jié)束函數(shù)執(zhí)行的作用。例如:第4行代碼就是多余的,永遠沒有執(zhí)行的機會。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)五、函數(shù)的調(diào)用方式與函數(shù)原型5.1函數(shù)的調(diào)用方式所謂函數(shù)調(diào)用(FunctionCall),就是使用已經(jīng)定義好的函數(shù)。函數(shù)調(diào)用的一般形式為:實參列表。實參可以是常數(shù)、變量、表達式等,多個實參用逗號,分隔。函數(shù)名稱函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)五、函數(shù)的調(diào)用方式與函數(shù)原型5.1函數(shù)的調(diào)用方式在C語言中,函數(shù)調(diào)用的方式有多種,例如:函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)五、函數(shù)的調(diào)用方式與函數(shù)原型5.2函數(shù)的嵌套調(diào)用函數(shù)不能嵌套定義,但可以嵌套調(diào)用,也就是在一個函數(shù)的定義或調(diào)用過程中允許出現(xiàn)對另外一個函數(shù)的調(diào)用。例如:計算sum=1!+2!+3!+...+(n-1)!+n!。分析:可以編寫兩個函數(shù),一個用來計算階乘,一個用來計算累加的和。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)五、函數(shù)的調(diào)用方式與函數(shù)原型5.2函數(shù)的嵌套調(diào)用sum()的定義中出現(xiàn)了對factorial()的調(diào)用,printf()的調(diào)用過程中出現(xiàn)了對sum()的調(diào)用,而printf()又被main()調(diào)用,它們整體調(diào)用關系為:如果一個函數(shù)A()在定義或調(diào)用過程中出現(xiàn)了對另外一個函數(shù)B()的調(diào)用,那么我們就稱A()為主調(diào)函數(shù)或主函數(shù),稱B()為被調(diào)函數(shù)。當主調(diào)函數(shù)遇到被調(diào)函數(shù)時,主調(diào)函數(shù)會暫停,CPU轉(zhuǎn)而執(zhí)行被調(diào)函數(shù)的代碼;被調(diào)函數(shù)執(zhí)行完畢后再返回主調(diào)函數(shù),主調(diào)函數(shù)根據(jù)剛才的狀態(tài)繼續(xù)往下執(zhí)行。一個C語言程序的執(zhí)行過程可以認為是多個函數(shù)之間的相互調(diào)用過程,它們形成了一個或簡單或復雜的調(diào)用鏈條。這個鏈條的起點是main(),終點也是main()。當main()調(diào)用完了所有的函數(shù),它會返回一個值(例如return0;)來結(jié)束自己的生命,從而結(jié)束整個程序。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)五、函數(shù)的調(diào)用方式與函數(shù)原型5.3函數(shù)原型的聲明有參函數(shù)的聲明形式為:無參函數(shù)的聲明形式為:注意:函數(shù)聲明包含函數(shù)的首部和一個分號“;”,函數(shù)體不用寫。有參函數(shù)聲明時的形參列表只需要把一個個參數(shù)類型給出就可以了,可以省略變量名,例如:函數(shù)聲明可以放在所有函數(shù)的前面,如果放在主調(diào)函數(shù)內(nèi),需在調(diào)用被調(diào)函數(shù)之前聲明。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)五、函數(shù)的調(diào)用方式與函數(shù)原型5.3函數(shù)原型的聲明例如:編寫一個函數(shù),求半徑為r的球的體積。球的半徑r由用戶輸入。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)五、函數(shù)的調(diào)用方式與函數(shù)原型5.3函數(shù)原型的聲明函數(shù)的聲明在下面3種情況下是可以省略的。①被調(diào)函數(shù)定義在主調(diào)函數(shù)之前。②被調(diào)函數(shù)的返回值是整型或字符型(整型是系統(tǒng)默認的類型)。③在所有的函數(shù)定義之前,已在函數(shù)外部進行了函數(shù)聲明。注意:如果被調(diào)函數(shù)是C語言提供的庫函數(shù),調(diào)用時不需要作函數(shù)聲明,但必須把該庫函數(shù)的頭文件用#include命令包含在源程序的最前面。例如,getchar()、putchar()、gets()、puts()等,這樣的函數(shù)定義是放在stdio.h頭文件中的,只要在程序的最前面加上#include<stdio.h>就可以了。同樣,如果使用數(shù)學庫中的函數(shù),則應該用#include<math.h>。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)六、變量作用域和生存期6.1變量的作用域作用域的域英文翻譯為scope,作用域即作用范圍。作用域關鍵在于域,作用域影響的是訪問權限,出了作用域就無權訪問了。作用域有三種:①extern(外部的):這是在函數(shù)外部定義的變量的缺省存儲方式。extern變量的作用域是整個程序。②static(靜態(tài)的):在函數(shù)外部說明為static的變量的作用域為從定義點到該文件尾部;在函數(shù)內(nèi)部說明為static的變量的作用域為從定義點到該局部程序塊尾部。③auto(自動的):這是在函數(shù)內(nèi)部說明的變量的缺省存儲方式。auto變量的作用域為從定義點到該局部程序塊尾部。函數(shù)的參數(shù)和返回值課程導入用戶函數(shù)的定義與調(diào)用函數(shù)的概念與類型變量作用域和生存期函數(shù)的調(diào)用方式與函數(shù)原型總結(jié)六、變量作用域和生存期6.2變量的生存期生存期,關鍵在于生死期,和其定義的內(nèi)存區(qū)域有關。變量的生存期也有三種,但它們不象作用域那樣有預定義的關鍵字名稱。第一種是extern和static變量的生存期,它從main()函數(shù)被調(diào)用之前開始,到程序退出時為止。第二種是函數(shù)參
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46911-2025養(yǎng)老機構(gòu)老年人保護性約束服務規(guī)范
- GB/T 46876-2025煙氣二氧化碳捕集與壓縮裝置運行管理規(guī)范
- 超聲科預約制度
- 請大家認真查閱報銷制度
- 養(yǎng)老機構(gòu)后勤管理制度
- 2025 小學四年級科學下冊土壤有機質(zhì)來源與作用講解課件
- 零配件技術型銷售
- 2026年聊城東阿縣初級綜合類事業(yè)單位公開招聘人員(37人)備考考試試題附答案解析
- 2026廣西防城港市東興市商務和口岸管理局、東興海關招聘1人(第二批)參考考試題庫附答案解析
- 2026浙江臺州玉環(huán)農(nóng)商銀行招聘17人參考考試題庫附答案解析
- 2025-2026學年仁愛科普版七年級英語上冊(全冊)知識點梳理歸納
- 乙狀結(jié)腸癌教學課件
- TNAHIEM 156-2025 口內(nèi)數(shù)字印模設備消毒滅菌管理規(guī)范
- 頂棚保溫施工組織方案
- ISO13485:2016醫(yī)療器械質(zhì)量管理手冊+全套程序文件+表單全套
- 學校6S管理培訓
- DB15-T 4031-2025 建設項目水資源論證表編制導則
- 2025-2030國學啟蒙教育傳統(tǒng)文化復興與商業(yè)模式探索報告
- 2025年事業(yè)單位考試(醫(yī)療衛(wèi)生類E類)職業(yè)能力傾向測驗試卷及答案指導
- 2025年江蘇省高考歷史真題(含答案解析)
- 系統(tǒng)解剖學章節(jié)練習題及答案
評論
0/150
提交評論