c語言中一個完整的函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,而且定義函數(shù)時兩者都是必不可少的。
為貴州等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及貴州網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站制作、貴州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
函數(shù)定義的一般形式如下:
類型標(biāo)識符
函數(shù)名(形參表列)
//
這是函數(shù)首部
//
以下{
}內(nèi)的是函數(shù)體
{
說明部分
執(zhí)行部分
}
舉例說明如下:
//
定義一個不帶返回值的函數(shù)
//
函數(shù)功能:輸出形參的值
void
fun(int
a,
int
b)
{
printf("%d,
%d\n",
a,
b);
}
//
定義一個帶返回值的函數(shù)
//
函數(shù)功能:返回2個整數(shù)數(shù)的最大值
int
fun(int
a,
int
b)
{
return
ab
?
a
:
b;
}
函數(shù)是一組一起執(zhí)行一個任務(wù)的語句。每個 C 程序都至少有一個函數(shù),即主函數(shù) main() ,所有簡單的程序都可以定義其他額外的函數(shù)。
您可以把代碼劃分到不同的函數(shù)中。如何劃分代碼到不同的函數(shù)中是由您來決定的,但在邏輯上,劃分通常是根據(jù)每個函數(shù)執(zhí)行一個特定的任務(wù)來進(jìn)行的。
C 標(biāo)準(zhǔn)庫提供了大量的程序可以調(diào)用的內(nèi)置函數(shù)。例如,函數(shù) strcat() 用來連接兩個字符串,函數(shù) memcpy() 用來復(fù)制內(nèi)存到另一個位置。
函數(shù)還有很多叫法,比如方法、子例程或程序,等等。
C 語言中的函數(shù)定義的一般形式如下:
在 C 語言中,函數(shù)由一個函數(shù)頭和一個函數(shù)主體組成。下面列出一個函數(shù)的所有組成部分:
以下是 max() 函數(shù)的源代碼。該函數(shù)有兩個參數(shù) num1 和 num2,會返回這兩個數(shù)中較大的那個數(shù):
創(chuàng)建 C 函數(shù)時,會定義函數(shù)做什么,然后通過調(diào)用函數(shù)來完成已定義的任務(wù)。
當(dāng)程序調(diào)用函數(shù)時,程序控制權(quán)會轉(zhuǎn)移給被調(diào)用的函數(shù)。被調(diào)用的函數(shù)執(zhí)行已定義的任務(wù),當(dāng)函數(shù)的返回語句被執(zhí)行時,或到達(dá)函數(shù)的結(jié)束括號時,會把程序控制權(quán)交還給主程序。
調(diào)用函數(shù)時,傳遞所需參數(shù),如果函數(shù)返回一個值,則可以存儲返回值。例如:
如上把 max() 函數(shù)和 main() 函數(shù)放一塊,編譯源代碼。當(dāng)運(yùn)行最后的可執(zhí)行文件時,會產(chǎn)生下列結(jié)果:
形式參數(shù)就像函數(shù)內(nèi)的其他局部變量,在進(jìn)入函數(shù)時被創(chuàng)建,退出函數(shù)時被銷毀。
當(dāng)調(diào)用函數(shù)時,有兩種向函數(shù)傳遞參數(shù)的方式:
默認(rèn)情況下,C 使用 傳值調(diào)用 來傳遞參數(shù)。一般來說,這意味著函數(shù)內(nèi)的代碼不能改變用于調(diào)用函數(shù)的實(shí)際參數(shù)。
函數(shù)的定義通常包含以下內(nèi)容:
函數(shù)返回值類型
函數(shù)名(形參表說明)
/*
函數(shù)首部
*/
{
說明語句
/*
函數(shù)體
*/
執(zhí)行語句
}
說明:
(1)數(shù)的定義中的類型,是指函數(shù)返回值的類型。函數(shù)返回值不能是數(shù)組,也不能是函數(shù),除此之外任何合法的數(shù)據(jù)類型都可以是函數(shù)的類型,如:int
、long、float、char等,或是后面講到的指針、結(jié)構(gòu)等。函數(shù)的類型是可以省略的,當(dāng)不指明函數(shù)類型時,系統(tǒng)默認(rèn)的是整類型。
(2)函數(shù)名是用戶自定義的標(biāo)識符,是C語言函數(shù)定義中唯一不可省略的部分,需符合C語言對標(biāo)識符的規(guī)定,即由字母,數(shù)字或下劃線組成,用于標(biāo)識函數(shù),并用該標(biāo)識符調(diào)用函數(shù)。另外,函數(shù)名本身也有值,它代表了該函數(shù)的入口地址,使用指針調(diào)用該函數(shù)時,將用到此功能。
(3)形參也成為"形式參數(shù)"。形參表是用逗號分隔的一組變量說明,包括形參的類型和形參標(biāo)識符,其作用是指出每一個形參的類型和形參的名稱,當(dāng)調(diào)用函數(shù)時,接受來自主調(diào)函數(shù)的數(shù)據(jù),確定各參數(shù)的值。形參表說明可以有兩種表示形式:
int
func
(int
x,
int
y
)
{
……
}
或
:
int
func
(
x,
y
)
int
x,
y;
{
……
}
通常,調(diào)用函數(shù)需要多個原始數(shù)據(jù),就必須定義多個形式參數(shù)。注意,在")"后面不能加分號";"。
(4)用{
}括起來的部分是函數(shù)的主體,稱為函數(shù)體。函數(shù)體是一段程序,確定該函數(shù)應(yīng)完成的規(guī)定的運(yùn)算,應(yīng)執(zhí)行的規(guī)定的動作,集中體現(xiàn)了函數(shù)的功能。函數(shù)內(nèi)部應(yīng)有自己的說明語句和執(zhí)行語句,但函數(shù)內(nèi)定義的變量不可以與形參同名?;ɡㄌ杮
}是不可省略的。
根據(jù)函數(shù)定義的一般形式,我們可以得到一個C語言中最簡單的函數(shù):
dumy
(
)
{
}
這是C語言中一個合法的函數(shù),函數(shù)名為dumy。它沒有函數(shù)類型說明,也沒有形參表,同時函數(shù)體內(nèi)也沒有語句。實(shí)際上函數(shù)dumy不執(zhí)行任何操作和運(yùn)算,在一般情況下是沒有用途的,但在程序開發(fā)的過程中有時是需要的,常用來代替尚未開發(fā)完畢的函數(shù)。
函數(shù)定義包括有參函數(shù)和無參函數(shù),無參函數(shù)為:
類型標(biāo)示符
函數(shù)名()
{
聲明語句
語句部分
}
無參函數(shù):
類型標(biāo)示符
函數(shù)名(形式參數(shù)列表)
{
聲明部分
語句部分
}
例如:
int
max(int
x,int
y)
{
int
z;
z=xy?x:y;
return(z);
}