函數(shù)是用戶與程序的接口,在定義一個函數(shù)前,首先要清楚以下三個問題。1) 函數(shù)的功能實現(xiàn)及算法選擇。算法選擇會在后續(xù)文章詳細(xì)講解,本節(jié)重點關(guān)注函數(shù)的功能實現(xiàn)。一般選取能體現(xiàn)函數(shù)功能的函數(shù)名,且見名知意,如求和函數(shù)的函數(shù)名可取為 add,求最大值的函數(shù)名可取為 max,排序函數(shù)可取名為 sort 等。2) 需要用戶傳給該函數(shù)哪些參數(shù)、什么類型,即函數(shù)參數(shù)。3) 函數(shù)執(zhí)行完后返回給調(diào)用者的參數(shù)及類型,即函數(shù)返回值類型。 函教定義格式 函數(shù)定義的一般格式為: 返回類型 函數(shù)名 (類型參數(shù)1,類型參數(shù)2,…) {函數(shù)體 }也可以不含參數(shù),不含參數(shù)時,參數(shù)表中可寫關(guān)鍵字 void 或省略,為規(guī)范起見,教程中對沒有參數(shù)的函數(shù),參數(shù)表中統(tǒng)一寫 void。例如: 類型 函數(shù)名 () {函數(shù)體 }等價于: 類型 函數(shù)名 (void) //建議的書寫方式 {函數(shù)體 } 如果該函數(shù)沒有返回類型,則為 void 類型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 類型外,在函數(shù)體中,均需要顯式使用 return 語句返回對應(yīng)的表達(dá)式的值。 函教返回值 函數(shù)的值是指調(diào)用函數(shù)結(jié)束時,執(zhí)行函數(shù)體所得并返回給主調(diào)函數(shù)的值。 關(guān)于函數(shù)返回值說明如下。1) 帶返回值的函數(shù),其值一般使用 return 語句返回給調(diào)用者。其格式為: return 表達(dá)式;或者 return (表達(dá)式);例如: int add (int a, int b) {return (a + b); //return 后為表達(dá)式 } 函數(shù)可以含一個或多個 return 語句,但每次調(diào)用時只能執(zhí)行其中一個 return 語句。例如,求整數(shù)絕對值的函數(shù): int f (int n) //含多個return語句,但每次調(diào)用只執(zhí)行一個 {if (n = 0)return n;elsereturn -n; }
創(chuàng)新互聯(lián)公司主要從事網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)邳州,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
c語言中一個完整的函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,而且定義函數(shù)時兩者都是必不可少的。
函數(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;
}
return的功能是終止一個函數(shù)
函數(shù)類型是void類型,也是可以加return的
但是其后面不能加任何數(shù)值 表示函數(shù)到此為止
# include "stdio.h"
void main(void)
{
printf("這是return之前的語句\n");
return;
printf("這是return之后的語句\n");
}
/*
在vc++6.0中的輸出結(jié)果:
------------------------
這是return之前的語句
Press any key to continue
------------------------------
*/
函數(shù)定義就是規(guī)定函數(shù)的格式與功能。
函數(shù)聲明就是在函數(shù)調(diào)用之前進(jìn)行的一種說明。
下面舉例說明兩者的語法格式:
#includestdio.h
int?fun(int?a,?int?b);??//?函數(shù)的聲明
void?main()
{
int?x=1,?y=2;
int?c;
c?=?fun(x+y);
}
//?下面的fun函數(shù)就是函數(shù)的定義
int?fun(int?a,?int?b)
{
return?a+b;
}
注:如果被調(diào)函數(shù)(上例中為fun函數(shù))寫在調(diào)用處之前,可以不聲明(本例是現(xiàn)在調(diào)用處?(c = fun(x+y);)之后)。
C語言的函數(shù)定義格式是:
函數(shù)類型 函數(shù)名稱 ( 參數(shù)列表 )
{
//函數(shù)體
}
函數(shù)聲明,不是說明的格式是“函數(shù)定義格式”的第一行,然后加 “;”,即:
函數(shù)類型 函數(shù)名稱 ( 參數(shù)列表 );
特別地,在函數(shù)聲明中的參數(shù)列表中,不需要給出具體的變量名稱,但必須給出每個變量的類型。
先舉個例子: #include int max(int,int); //這是函數(shù)max的申明,最后要加分號 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的定義部分,最后不加分號 { if (nm) return n; else return m; } 不能在函數(shù)體內(nèi)定義函數(shù)是什么意思?【就是說函數(shù)在程序中不能嵌套定義,這個和Pascal語言不同,例如上面程序中,max函數(shù)不能定義在main函數(shù)中間】定義是聲明還是使用?【定義既不是申明,也不是使用,函數(shù)具體功能的實現(xiàn)代碼叫做函數(shù)的定義,如上面程序最后7行就是定義】函數(shù)不是應(yīng)該先聲明在使用嗎?【是的,但如果函數(shù)定義在函數(shù)使用之前,就可以不用申明(如下面程序)。函數(shù)定義在函數(shù)使用后的情況下(如上面程序),先聲明,能使編譯器在編譯在編譯過程中能夠識別使用的函數(shù)】 #include int max(int n,int m) //這是函數(shù)max的定義部分,最后不加分號 { 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; } 定義如何解釋?【見第二個問題】