函數(shù)是一組一起執(zhí)行一個(gè)任務(wù)的語句。每個(gè) C 程序都至少有一個(gè)函數(shù),即主函數(shù) main() ,所有簡(jiǎn)單的程序都可以定義其他額外的函數(shù)。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的船山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
您可以把代碼劃分到不同的函數(shù)中。如何劃分代碼到不同的函數(shù)中是由您來決定的,但在邏輯上,劃分通常是根據(jù)每個(gè)函數(shù)執(zhí)行一個(gè)特定的任務(wù)來進(jìn)行的。
C 標(biāo)準(zhǔn)庫提供了大量的程序可以調(diào)用的內(nèi)置函數(shù)。例如,函數(shù) strcat() 用來連接兩個(gè)字符串,函數(shù) memcpy() 用來復(fù)制內(nèi)存到另一個(gè)位置。
函數(shù)還有很多叫法,比如方法、子例程或程序,等等。
C 語言中的函數(shù)定義的一般形式如下:
在 C 語言中,函數(shù)由一個(gè)函數(shù)頭和一個(gè)函數(shù)主體組成。下面列出一個(gè)函數(shù)的所有組成部分:
以下是 max() 函數(shù)的源代碼。該函數(shù)有兩個(gè)參數(shù) num1 和 num2,會(huì)返回這兩個(gè)數(shù)中較大的那個(gè)數(shù):
創(chuàng)建 C 函數(shù)時(shí),會(huì)定義函數(shù)做什么,然后通過調(diào)用函數(shù)來完成已定義的任務(wù)。
當(dāng)程序調(diào)用函數(shù)時(shí),程序控制權(quán)會(huì)轉(zhuǎn)移給被調(diào)用的函數(shù)。被調(diào)用的函數(shù)執(zhí)行已定義的任務(wù),當(dāng)函數(shù)的返回語句被執(zhí)行時(shí),或到達(dá)函數(shù)的結(jié)束括號(hào)時(shí),會(huì)把程序控制權(quán)交還給主程序。
調(diào)用函數(shù)時(shí),傳遞所需參數(shù),如果函數(shù)返回一個(gè)值,則可以存儲(chǔ)返回值。例如:
如上把 max() 函數(shù)和 main() 函數(shù)放一塊,編譯源代碼。當(dāng)運(yùn)行最后的可執(zhí)行文件時(shí),會(huì)產(chǎn)生下列結(jié)果:
形式參數(shù)就像函數(shù)內(nèi)的其他局部變量,在進(jìn)入函數(shù)時(shí)被創(chuàng)建,退出函數(shù)時(shí)被銷毀。
當(dāng)調(diào)用函數(shù)時(shí),有兩種向函數(shù)傳遞參數(shù)的方式:
默認(rèn)情況下,C 使用 傳值調(diào)用 來傳遞參數(shù)。一般來說,這意味著函數(shù)內(nèi)的代碼不能改變用于調(diào)用函數(shù)的實(shí)際參數(shù)。
先舉個(gè)例子:
#include stdio.h
int max(int,int); //這是函數(shù)max的申明,最后要加分號(hào)
int main()
{
int a=1,b=2,c;
c = max(a,b); //這是函數(shù)max的使用
printf("%d",c);
return 0;
}
int max(int n,int m) //這是函數(shù)max的定義部分,最后不加分號(hào)
{
if (nm)
return n;
else
return m;
}
不能在函數(shù)體內(nèi)定義函數(shù)是什么意思?
【就是說函數(shù)在程序中不能嵌套定義,這個(gè)和Pascal語言不同,例如上面程序中,max函數(shù)不能定義在main函數(shù)中間】
定義是聲明還是使用?
【定義既不是申明,也不是使用,函數(shù)具體功能的實(shí)現(xiàn)代碼叫做函數(shù)的定義,如上面程序最后7行就是定義】
函數(shù)不是應(yīng)該先聲明在使用嗎?
【是的,但如果函數(shù)定義在函數(shù)使用之前,就可以不用申明(如下面程序)。函數(shù)定義在函數(shù)使用后的情況下(如上面程序),先聲明,能使編譯器在編譯在編譯過程中能夠識(shí)別使用的函數(shù)】
#include stdio.h
int max(int n,int m) //這是函數(shù)max的定義部分,最后不加分號(hào)
{
if (nm)
return n;
else
return m;
}
int main()
{
int a=1,b=2,c;
c = max(a,b); //這是函數(shù)max的使用
printf("%d",c);
return 0;
}
定義如何解釋?
【見第二個(gè)問題】
C語言中一個(gè)函數(shù)(function)是一個(gè)可以從程序其它地方調(diào)用執(zhí)行的語句塊。
1、通過使用函數(shù)(functions)我們可以把我們的程序以更模塊化的形式組織起來,從而利用C語言所支持的結(jié)構(gòu)化程序設(shè)計(jì)。
2、從數(shù)學(xué)角度,函數(shù)即集合A和集合B之間的映射關(guān)系。實(shí)際上計(jì)算機(jī)中的函數(shù)概念也是源于此,因此,一般函數(shù),都有形參和返回值。
3、從計(jì)算機(jī)組成原理的角度來看,函數(shù)即是一個(gè)小型的計(jì)算機(jī)系統(tǒng),依據(jù)馮諾伊曼的“存儲(chǔ)程序原理”,每一個(gè)計(jì)算機(jī)系統(tǒng)包含:輸入系統(tǒng)、輸出系統(tǒng)、運(yùn)算器以及控制器,實(shí)際上對(duì)于C語言中的函數(shù)來說,它是“存儲(chǔ)程序原理”的軟實(shí)現(xiàn),其中形參、實(shí)參這是輸入系統(tǒng),返回值是輸出系統(tǒng),函數(shù)體中的運(yùn)算符,比如+、-、*、/四則運(yùn)算即為運(yùn)算器,而邏輯運(yùn)算符以及if、while等控制語句便是一個(gè)控制器。
c語言定義函數(shù)是一段可以重復(fù)使用的代碼,用來獨(dú)立地完成某個(gè)功能,它可以接收用戶傳遞的數(shù)據(jù),也可以不接收。
接收用戶數(shù)據(jù)的函數(shù)在定義時(shí)要指明參數(shù),不接收用戶數(shù)據(jù)的不需要指明,根據(jù)這一點(diǎn)可以將函數(shù)分為有參函數(shù)和無參函數(shù)。
函數(shù)就是一段封裝好的,可以重復(fù)使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。函數(shù)可以提前保存起來,并給它起一個(gè)獨(dú)一無二的名字,只要知道它的名字就能使用這段代碼。
C語言特點(diǎn)及運(yùn)用范圍:
C語言是一門面向過程的、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語言是僅產(chǎn)生少量的機(jī)器語言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語言。它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。
C語言特點(diǎn):簡(jiǎn)潔的語言、具有結(jié)構(gòu)化的控制語句、豐富的數(shù)據(jù)類型、豐富的運(yùn)算符、可對(duì)物理地址進(jìn)行直接操作、代碼具有較好的可移植性、可生成高質(zhì)量、目標(biāo)代碼執(zhí)行效率高的程序。
C語言是一門面向過程的計(jì)算機(jī)編程語言,C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、僅產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng)。