C語(yǔ)言 函數(shù)的定義 說(shuō)明
從上面兩個(gè)例題可看出,一個(gè)函數(shù)是由函數(shù)說(shuō)明部分和函數(shù)體構(gòu)成的。
(1)函數(shù)說(shuō)明部分
函數(shù)說(shuō)明部分包括類型標(biāo)識(shí)符、函數(shù)名、參數(shù)表及參數(shù)類型等。
①類型標(biāo)識(shí)符:類型標(biāo)識(shí)符用來(lái)定義函數(shù)的類型。函數(shù)的類型即是函數(shù)返回值的類型,希望函數(shù)返回什么類型的值就用該類型來(lái)說(shuō)明函數(shù)。例如上例求最大值函數(shù)max()中,返回值是a和b兩個(gè)數(shù)中的最大值,a和b都是整型,所以返回值也應(yīng)是整型,因而用int來(lái)定義函數(shù)。
函數(shù)可以沒有返回值,如果函數(shù)不需要返回值,可將函數(shù)定義為空類型void。需要注意的是,如果不需要函數(shù)返回值,而且也未將函數(shù)定義為空類型,有些編譯系統(tǒng)在編譯時(shí)會(huì)報(bào)蝥告錯(cuò)誤。
②函數(shù)名:即函數(shù)定義時(shí)為函數(shù)所起的名字。當(dāng)該函數(shù)被調(diào)用時(shí),需要引用函數(shù)名。函數(shù)名的命名規(guī)則遵循C語(yǔ)言標(biāo)識(shí)符的命名規(guī)則,同一個(gè)程序中函數(shù)名不能重名。
③參數(shù)表:參數(shù)表是寫在函數(shù)名后面的括號(hào)“()”中的變量列表。參數(shù)表中包含一個(gè)或多個(gè)變量,每個(gè)變量前有聲明其類型的類型標(biāo)識(shí)符,每一個(gè)參數(shù)之間以逗號(hào)分隔。例如上例求最大值中:
int max (int a, int b)
參數(shù)表中有兩個(gè)參數(shù)a和b,且都是整型。
對(duì)于無(wú)參函數(shù),參數(shù)表是空的,但是函數(shù)名后面的“()”不可省略
(2)函數(shù)體
花括號(hào)“{}”括起的部分稱為函數(shù)體。函數(shù)體是函數(shù)的語(yǔ)句執(zhí)行部分,也由兩部分組成:說(shuō)明語(yǔ)句部分和可執(zhí)行語(yǔ)句部分。
①說(shuō)明語(yǔ)句:主要包括聲明語(yǔ)句,聲明變量、數(shù)組、指針、函數(shù)等。
②可執(zhí)行語(yǔ)句部分:是完成函數(shù)功能的執(zhí)行語(yǔ)句系列。注意如果函數(shù)有返回值,在執(zhí)行語(yǔ)句部分需要出現(xiàn)return語(yǔ)句。return語(yǔ)句用來(lái)將函數(shù)的返回值帶回給主調(diào)函數(shù)。
(3)函數(shù)定義不允許嵌套
在C語(yǔ)言中,所有函數(shù)包括主函數(shù)main()都是平行的。一個(gè)函數(shù)的定義,可以放在程序中的任意位置,主函數(shù)main()之前或之后。但在一個(gè)函數(shù)的函數(shù)體內(nèi),不能再定義另一個(gè)函數(shù),即不能嵌套定義。如以下定義是錯(cuò)誤的:
int oprdata(int a,int b)
{
int max(int x,int y) /* 試圖在 optdata 中嵌入一個(gè)max.函數(shù) */
{
return(x>y?x:y);
}
int min(int x.int y) /* 試圖在 optdata 中嵌入一個(gè)min.函數(shù) */
{
return (x<y?x:y);
}
}
(4)C語(yǔ)言允許定義空函數(shù)
空函數(shù)就是既無(wú)參數(shù)、函數(shù)體又為空的函數(shù)。其一般形式為:
[函數(shù)類型] 函數(shù)名(void)
{
}
例如:
void nothing()
{
}
nothing()函數(shù)就是一個(gè)空函數(shù),當(dāng)調(diào)用該函數(shù)時(shí),什么也不做。空函數(shù)的意義可以是先占位,等程序功能擴(kuò)展時(shí)加入具體有意義的內(nèi)容。
點(diǎn)擊加載更多評(píng)論>>