從定義上:庫(kù)函數(shù),和用戶(hù)定義函數(shù)兩種。
創(chuàng)新互聯(lián)專(zhuān)注于射洪網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供射洪營(yíng)銷(xiāo)型網(wǎng)站建設(shè),射洪網(wǎng)站制作、射洪網(wǎng)頁(yè)設(shè)計(jì)、射洪網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造射洪網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供射洪網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
庫(kù)函數(shù):由C系統(tǒng)提供,用戶(hù)無(wú)須定義,也不必在程序中作類(lèi)型說(shuō)明,只需在程序前包含有該函數(shù)原型的頭文件即可在程序中直接調(diào)用。在前面各章的例題中反復(fù)用到printf、scanf、getchar、putchar、gets、puts、strcat等函數(shù)均屬此類(lèi)。
用戶(hù)定義函數(shù):由用戶(hù)按需要寫(xiě)的函數(shù)。對(duì)于用戶(hù)自定義函數(shù),不僅要在程序中定義函數(shù)本身,而且在主調(diào)函數(shù)模塊中還必須對(duì)該被調(diào)函數(shù)進(jìn)行類(lèi)型說(shuō)明,然后才能使用。
C語(yǔ)言函數(shù)三要素是:定義域、值域和對(duì)應(yīng)法則。
一,C語(yǔ)言函數(shù)定義域
(1)無(wú)參函數(shù)定義的一般形式如下:
類(lèi)型標(biāo)識(shí)符 ?函數(shù)名(){
聲明部分
語(yǔ)句
}
其中類(lèi)型標(biāo)識(shí)符和函數(shù)名稱(chēng)為函數(shù)頭。類(lèi)型標(biāo)識(shí)符指明了本函數(shù)的類(lèi)型,函數(shù)的類(lèi)型實(shí)際上是函數(shù)返回值的類(lèi)型。該類(lèi)型標(biāo)識(shí)符與前面介紹的各種說(shuō)明符相同。函數(shù)名是由用戶(hù)定義的標(biāo)識(shí)符,函數(shù)名后有一個(gè)空括號(hào),其中無(wú)參數(shù),但括號(hào)不可少。
{}中的內(nèi)容稱(chēng)為函數(shù)體。在函數(shù)體中聲明部分,是對(duì)函數(shù)體內(nèi)部所用到的變量的類(lèi)型說(shuō)明。
在很多情況下都不要求無(wú)參函數(shù)有返回值,此時(shí)函數(shù)類(lèi)型符可以寫(xiě)為void。
這里,只把main改為Hello作為函數(shù)名,其余不變。Hello函數(shù)是一個(gè)無(wú)參函數(shù),當(dāng)被其它函數(shù)調(diào)用時(shí),輸出Hello world字符串。
(2)有參函數(shù)定義的一般形式
有參函數(shù)定義的一般形式如下:
類(lèi)型標(biāo)識(shí)符 ?函數(shù)名(形式參數(shù)表列){
聲明部分
語(yǔ)句
}
有參函數(shù)比無(wú)參函數(shù)多了一個(gè)內(nèi)容,即形式參數(shù)表列。在形參表中給出的參數(shù)稱(chēng)為形式參數(shù),它們可以是各種類(lèi)型的變量,各參數(shù)之間用逗號(hào)間隔。在進(jìn)行函數(shù)調(diào)用時(shí),主調(diào)函數(shù)將賦予這些形式參數(shù)實(shí)際的值。形參既然是變量,必須在形參表中給出形參的類(lèi)型說(shuō)明。
例如,定義一個(gè)函數(shù),用于求兩個(gè)數(shù)中的大數(shù),可寫(xiě)為:
第一行說(shuō)明max函數(shù)是一個(gè)整型函數(shù),其返回的函數(shù)值是一個(gè)整數(shù)。形參為a,b,均為整型量。a,b的具體值是由主調(diào)函數(shù)在調(diào)用時(shí)傳送過(guò)來(lái)的。在{}中的函數(shù)體內(nèi),除形參外沒(méi)有使用其它變量,因此只有語(yǔ)句而沒(méi)有聲明部分。在max函數(shù)體中的return語(yǔ)句是把a(bǔ)(或b)的值作為函數(shù)的值返回給主調(diào)函數(shù)。有返回值函數(shù)中至少應(yīng)有一個(gè)return語(yǔ)句。
在C程序中,一個(gè)函數(shù)的定義可以放在任意位置,既可放在主函數(shù)main之前,也可放在main之后。例如:可把max 函數(shù)置在main之后,也可以把它放在main之前。修改后的程序如下所示。
二,C語(yǔ)言的值域
函數(shù)的值是指函數(shù)被調(diào)用之后, 執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值。如調(diào)用正弦函數(shù)取得正弦值,調(diào)用例5.1的max函數(shù)取得的最大數(shù)等。對(duì)函數(shù)的值(或稱(chēng)函數(shù)返回值)有以下一些說(shuō)明:
1. 函數(shù)的值只能通過(guò)return語(yǔ)句返回主調(diào)函數(shù)。return 語(yǔ)句的一般形式為:
return 表達(dá)式;
或者為:
return (表達(dá)式);
該語(yǔ)句的功能是計(jì)算表達(dá)式的值,并返回給主調(diào)函數(shù)。 在函數(shù)中允許有多個(gè)return語(yǔ)句,但每次調(diào)用只能有一個(gè)return 語(yǔ)句被執(zhí)行, 因此只能返回一個(gè)函數(shù)值。
2. 函數(shù)值的類(lèi)型和函數(shù)定義中函數(shù)的類(lèi)型應(yīng)保持一致。 如果兩者不一致,則以函數(shù)類(lèi)型為準(zhǔn),自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。 3. 如函數(shù)值為整型,在函數(shù)定義時(shí)可以省去類(lèi)型說(shuō)明。
4. 不返回函數(shù)值的函數(shù),可以明確定義為“空類(lèi)型”, 類(lèi)型說(shuō)明符為“void”。如例5.3中函數(shù)s并不向主函數(shù)返函數(shù)值,因此可定義為:
void s(int n)
{ ……
}
三,C語(yǔ)言函數(shù)對(duì)應(yīng)法則(C語(yǔ)言函數(shù)的調(diào)用)
函數(shù)調(diào)用的一般形式為:
函數(shù)名(實(shí)參列表);
實(shí)參可以是常數(shù)、變量、表達(dá)式等,多個(gè)實(shí)參用逗號(hào),分隔。
在C語(yǔ)言中,函數(shù)調(diào)用的方式有多種,例如:
在函數(shù)調(diào)用中還應(yīng)該注意的一個(gè)問(wèn)題是求值順序的問(wèn)題。所謂求值順序是指對(duì)實(shí)參列表中各個(gè)參數(shù)是自左向右使用呢,還是自右向左使用。對(duì)此,各系統(tǒng)的規(guī)定不一定相同。
【示例】在VC6.0下運(yùn)行以下代碼。
運(yùn)行結(jié)果:
8 7 6 7
可見(jiàn)VC 6.0是按照從右至左的順序求值。如果按照從左至右求值,結(jié)果應(yīng)為:
9 ?10 ?9 ?8
函數(shù)的嵌套調(diào)用
函數(shù)不能嵌套定義,但可以嵌套調(diào)用,也就是在一個(gè)函數(shù)的定義中出現(xiàn)對(duì)另一個(gè)函數(shù)的調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用,即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。
【示例】計(jì)算sum = 1! + 2! + 3! + ... + (n-1)! + n!
分析:可以編寫(xiě)兩個(gè)函數(shù),一個(gè)用來(lái)計(jì)算階乘,一個(gè)用來(lái)計(jì)算累加的和。
運(yùn)行結(jié)果:
1!+2!+...+9!+10! = 1215752192
函數(shù)聲明和函數(shù)原型
C語(yǔ)言代碼由上到下依次執(zhí)行,函數(shù)定義要出現(xiàn)在函數(shù)調(diào)用之前。
但是,如果在函數(shù)調(diào)用前進(jìn)行了函數(shù)聲明,那么函數(shù)定義就可以出現(xiàn)在任何地方了,甚至是其他文件。
函數(shù)聲明的一般形式為:
返回值類(lèi)型 ?函數(shù)名( 類(lèi)型 形參, 類(lèi)型 形參… );
或?yàn)椋?/p>
返回值類(lèi)型 ?函數(shù)名( 類(lèi)型, 類(lèi)型…);
函數(shù)聲明給出了函數(shù)名、返回值類(lèi)型、參數(shù)列表(參數(shù)類(lèi)型)等與該函數(shù)有關(guān)的信息,稱(chēng)為函數(shù)原型。
函數(shù)原型的作用是告訴編譯器與該函數(shù)有關(guān)的信息,讓編譯器知道函數(shù)的存在,以及存在的形式,即使函數(shù)暫時(shí)沒(méi)有定義,也不會(huì)出錯(cuò)。
更改上面的代碼,將 factorial 和 sum 函數(shù)的定義放到 main 函數(shù)后面:
運(yùn)行結(jié)果:
1!+2!+...+9!+10! = 1215752192
函數(shù)是數(shù)學(xué)名詞,代數(shù)式中,凡相關(guān)的兩數(shù)X與Y,對(duì)于每個(gè)X值,都只有一個(gè)Y的對(duì)應(yīng)值。這種對(duì)應(yīng)關(guān)系就表示Y是X的函數(shù)。
函數(shù)(function)的定義通常分為傳統(tǒng)定義和近代定義,函數(shù)的兩個(gè)定義本質(zhì)是相同的,只是敘述概念的出發(fā)點(diǎn)不同,傳統(tǒng)定義是從運(yùn)動(dòng)變化的觀(guān)點(diǎn)出發(fā),而近代定義是從集合、映射的觀(guān)點(diǎn)出發(fā)。
函數(shù)的近代定義是給定一個(gè)數(shù)集A,假設(shè)其中的元素為x,對(duì)A中的元素x施加對(duì)應(yīng)法則f,記作f(x),得到另一數(shù)集B,假設(shè)B中的元素為y,則y與x之間的等量關(guān)系可以用y=f(x)表示,函數(shù)概念含有三個(gè)要素:定義域A、值域B和對(duì)應(yīng)法則f。其中核心是對(duì)應(yīng)法則f,它是函數(shù)關(guān)系的本質(zhì)特征。
函數(shù),最早由中國(guó)清朝數(shù)學(xué)家李善蘭翻譯,出于其著作《代數(shù)學(xué)》。之所以這么翻譯,他給出的原因是“凡此變數(shù)中函彼變數(shù)者,則此為彼之函數(shù)”,也即函數(shù)指一個(gè)量隨著另一個(gè)量的變化而變化,或者說(shuō)一個(gè)量。
一種是用戶(hù)自定義函數(shù),就是自己根據(jù)功能的需要自己編寫(xiě)的函數(shù);另一種是系統(tǒng)自帶的函數(shù),如sqrt(x)函數(shù) (就是求x的二次方根),這樣的可以直接用,前提是得在頭文件中把它們包含進(jìn)去。
在編程領(lǐng)域中,C語(yǔ)言的運(yùn)用非常之多,它兼顧了高級(jí)語(yǔ)言的匯編語(yǔ)言的優(yōu)點(diǎn),相較于其它編程語(yǔ)言具有較大優(yōu)勢(shì)。計(jì)算機(jī)系統(tǒng)設(shè)計(jì)以及應(yīng)用程序編寫(xiě)是C語(yǔ)言應(yīng)用的兩大領(lǐng)域。同時(shí),C語(yǔ)言的普適較強(qiáng),在許多計(jì)算機(jī)操作系統(tǒng)中都能夠得到適用,且效率顯著。
擴(kuò)展資料:
C語(yǔ)言包含有各種控制語(yǔ)句僅有9種,關(guān)鍵字也只有32 個(gè),程序的編寫(xiě)要求不嚴(yán)格且多以小寫(xiě)字母為主,對(duì)許多不必要的部分進(jìn)行了精簡(jiǎn)。
實(shí)際上,語(yǔ)句構(gòu)成與硬件有關(guān)聯(lián)的較少,且C語(yǔ)言本身不提供與硬件相關(guān)的輸入輸出、文件管理等功能,如需此類(lèi)功能,需要通過(guò)配合編譯系統(tǒng)所支持的各類(lèi)庫(kù)進(jìn)行編程,故c語(yǔ)言擁有非常簡(jiǎn)潔的編譯系統(tǒng)。
如果一個(gè)變量名后面跟著一個(gè)有數(shù)字的中括號(hào),這個(gè)聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結(jié)束。要特別注意的是,方括內(nèi)的索引值是從0算起的。
參考資料來(lái)源:百度百科-c語(yǔ)言
參考資料來(lái)源:百度百科--C語(yǔ)言函數(shù)
C語(yǔ)言的特點(diǎn) :
1、簡(jiǎn)潔緊湊、靈活方便
C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書(shū)寫(xiě)自由,主要用小寫(xiě)字母表示。它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。 C 語(yǔ)言可以象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。
2、運(yùn)算符豐富
C的運(yùn)算符包含的范圍很廣泛,共有種34個(gè)運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類(lèi)型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類(lèi)型極其豐富表達(dá)式類(lèi)型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。
3、數(shù)據(jù)結(jié)構(gòu)豐富
C的數(shù)據(jù)類(lèi)型有:整型、實(shí)型、字符型、數(shù)組類(lèi)型、指針類(lèi)型、結(jié)構(gòu)體類(lèi)型、共用體類(lèi)型等。能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類(lèi)型的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語(yǔ)言具有強(qiáng)大的圖形功能, 支持多種顯示器和驅(qū)動(dòng)器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。
4、C是結(jié)構(gòu)式語(yǔ)言
結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦? 便于使用、維護(hù)以及調(diào)試。C語(yǔ)言是以函數(shù)形式提供給用戶(hù)的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。
5、C語(yǔ)法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大
一般的高級(jí)語(yǔ)言語(yǔ)法檢查比較嚴(yán),能夠檢查出幾乎所有的語(yǔ)法錯(cuò)誤。而C語(yǔ)言允許程序編寫(xiě)者有較大的自由度。
6、C語(yǔ)言允許直接訪(fǎng)問(wèn)物理地址,可以直接對(duì)硬件進(jìn)行操作
因此既具有高級(jí)語(yǔ)言的功能,又具有低級(jí)語(yǔ)言的許多功能,能夠象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可以用來(lái)寫(xiě)系統(tǒng)軟件。
7、C語(yǔ)言程序生成代碼質(zhì)量高,程序執(zhí)行效率高
一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%。
8、 C語(yǔ)言適用范圍大,可移植性好
C語(yǔ)言有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng), 如DOS、UNIX,也適用于多種機(jī)型。
用法補(bǔ)充:C語(yǔ)言對(duì)操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用C語(yǔ)言明顯優(yōu)于其它高級(jí)語(yǔ)言,許多大型應(yīng)用軟件都是用C語(yǔ)言編寫(xiě)的。 C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫(xiě)系統(tǒng)軟件,三維,二維圖形和動(dòng)畫(huà)它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。
擴(kuò)展資料:
特有特點(diǎn)
1、C語(yǔ)言是一個(gè)有結(jié)構(gòu)化程序設(shè)計(jì)、具有變量作用域(variable scope)以及遞歸功能的過(guò)程式語(yǔ)言。
2、C語(yǔ)言傳遞參數(shù)均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3、不同的變量類(lèi)型可以用結(jié)構(gòu)體(struct)組合在一起。
4、只有32個(gè)保留字(reserved keywords),使變量、函數(shù)命名有更多彈性。
5、部份的變量類(lèi)型可以轉(zhuǎn)換,例如整型和字符型變量。
6、通過(guò)指針(pointer),C語(yǔ)言可以容易的對(duì)存儲(chǔ)器進(jìn)行低級(jí)控制。
7、預(yù)編譯處理(preprocessor)讓C語(yǔ)言的編譯更具有彈性。
參考資料:百度百科-c語(yǔ)言