注意:
1、[]包含的內(nèi)容可以省略质蕉,數(shù)據(jù)類型說明省略势篡,默認(rèn)是int類型函數(shù);參數(shù)省略表示該函數(shù)是無參函數(shù)模暗,參數(shù)不省略表示該函數(shù)是有參函數(shù)禁悠;
2、函數(shù)名稱遵循標(biāo)識符命名規(guī)范兑宇;
3碍侦、自定義函數(shù)盡量放在main函數(shù)之前,如果要放在main函數(shù)后面的話隶糕,需要在main函數(shù)之前先聲明自定義函數(shù)瓷产,聲明格式為:[數(shù)據(jù)類型說明] 函數(shù)名稱([參數(shù)]);
函數(shù)的形參和實參具有以下特點:
形參只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時若厚,即刻釋放所分配的內(nèi)存單元拦英。因此,形參只有在函數(shù)內(nèi)部有效测秸。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量疤估。
實參可以是常量、變量霎冯、表達(dá)式铃拇、函數(shù)等,無論實參是何種類型的量沈撞,在進(jìn)行函數(shù)調(diào)用時慷荔,它們都必須具有確定的值,以便把這些值傳送給形參缠俺。因此應(yīng)預(yù)先用賦值等辦法使實參獲得確定值显晶。
在參數(shù)傳遞時,實參和形參在數(shù)量上壹士,類型上磷雇,順序上應(yīng)嚴(yán)格一致,否則會發(fā)生類型不匹配”的錯誤躏救。
遞歸函數(shù)特點:
每一級函數(shù)調(diào)用時都有自己的變量唯笙,但是函數(shù)代碼并不會得到復(fù)制螟蒸,如計算5的階乘時每遞推一次變量都不同;
每次調(diào)用都會有一次返回崩掘,如計算5的階乘時每遞推一次都返回進(jìn)行下一次七嫌;
遞歸函數(shù)中,位于遞歸調(diào)用前的語句和各級被調(diào)用函數(shù)具有相同的執(zhí)行順序苞慢;
遞歸函數(shù)中诵原,位于遞歸調(diào)用后的語句的執(zhí)行順序和各個被調(diào)用函數(shù)的順序相反;
遞歸函數(shù)中必須有終止語句挽放。
一句話總結(jié)遞歸:自我調(diào)用且有完成狀態(tài)皮假。
C語言根據(jù)變量的生存周期來劃分,可以分為靜態(tài)存儲方式和動態(tài)存儲方式骂维。
靜態(tài)存儲方式:是指在程序運行期間分配固定的存儲空間的方式惹资。靜態(tài)存儲區(qū)中存放了在整個程序執(zhí)行過程中都存在的變量,如全局變量航闺。
動態(tài)存儲方式:是指在程序運行期間根據(jù)需要進(jìn)行動態(tài)的分配存儲空間的方式褪测。動態(tài)存儲區(qū)中存放的變量是根據(jù)程序運行的需要而建立和釋放的,通常包括:函數(shù)形式參數(shù)潦刃;自動變量侮措;函數(shù)調(diào)用時的現(xiàn)場保護(hù)和返回地址等。
C語言中存儲類別又分為四類:自動(auto)乖杠、靜態(tài)(static)分扎、寄存器的(register)和外部的(extern)。
1胧洒、用關(guān)鍵字auto定義的變量為自動變量畏吓,auto可以省略,auto不寫則隱含定為“自動存儲類別”卫漫,屬于動態(tài)存儲方式菲饼。
2、用static修飾的為靜態(tài)變量列赎,如果定義在函數(shù)內(nèi)部的宏悦,稱之為靜態(tài)局部變量;如果定義在函數(shù)外部包吝,稱之為靜態(tài)外部變量饼煞。
注意:靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元诗越,在程序整個運行期間都不釋放砖瞧;靜態(tài)局部變量在編譯時賦初值,即只賦初值一次掺喻;如果在定義局部變量時不賦初值的話芭届,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)感耙。
3褂乍、為了提高效率,C語言允許將局部變量得值放在CPU中的寄存器中即硼,這種變量叫“寄存器變量”逃片,用關(guān)鍵字register作聲明。
注意:只有局部自動變量和形式參數(shù)可以作為寄存器變量只酥;一個計算機(jī)系統(tǒng)中的寄存器數(shù)目有限褥实,不能定義任意多個寄存器變量;局部靜態(tài)變量不能定義為寄存器變量裂允。
4损离、用extern聲明的的變量是外部變量,外部變量的意義是某函數(shù)可以調(diào)用在該函數(shù)之后定義的變量绝编。
在C語言中不能被其他源文件調(diào)用的函數(shù)稱謂內(nèi)部函數(shù) 僻澎,內(nèi)部函數(shù)由static關(guān)鍵字來定義,因此又被稱謂靜態(tài)函數(shù)十饥,形式為:
static [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])
這里的static是對函數(shù)的作用范圍的一個限定窟勃,限定該函數(shù)只能在其所處的源文件中使用,因此在不同文件中出現(xiàn)相同的函數(shù)名稱的內(nèi)部函數(shù)是沒有問題的逗堵。
在C語言中能被其他源文件調(diào)用的函數(shù)稱謂外部函數(shù) 秉氧,外部函數(shù)由extern關(guān)鍵字來定義,形式為:
extern [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])
C語言規(guī)定蜒秤,在沒有指定函數(shù)的作用范圍時汁咏,系統(tǒng)會默認(rèn)認(rèn)為是外部函數(shù),因此當(dāng)需要定義外部函數(shù)時extern也可以省略作媚。