函數(shù)是用戶與程序的接口,在定義一個函數(shù)前,首先要清楚以下三個問題。1) 函數(shù)的功能實現(xiàn)及算法選擇。算法選擇會在后續(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)的表達式的值。 函教返回值 函數(shù)的值是指調(diào)用函數(shù)結(jié)束時,執(zhí)行函數(shù)體所得并返回給主調(diào)函數(shù)的值。 關(guān)于函數(shù)返回值說明如下。1) 帶返回值的函數(shù),其值一般使用 return 語句返回給調(diào)用者。其格式為: return 表達式;或者 return (表達式);例如: int add (int a, int b) {return (a + b); //return 后為表達式 } 函數(shù)可以含一個或多個 return 語句,但每次調(diào)用時只能執(zhí)行其中一個 return 語句。例如,求整數(shù)絕對值的函數(shù): int f (int n) //含多個return語句,但每次調(diào)用只執(zhí)行一個 {if (n = 0)return n;elsereturn -n; }
望奎ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
將代碼段封裝成函數(shù)的過程叫做函數(shù)定義。
函數(shù)可以重復(fù)使用的代碼,用來獨立地完成某個功能,它可以接收用戶傳遞的數(shù)據(jù),也可以不接收。接收用戶數(shù)據(jù)的函數(shù)在定義時要指明參數(shù),不接收用戶數(shù)據(jù)的不需要指明,根據(jù)這一點可以將函數(shù)分為有參函數(shù)和無參函數(shù)。
相關(guān)概念:
函數(shù)不能嵌套定義,main 也是一個函數(shù)定義,所以要將 sum 放在 main 外面。函數(shù)必須先定義后使用,所以 sum 要放在 main 前面。
函數(shù)定義時給出的參數(shù)稱為形式參數(shù),簡稱形參;函數(shù)調(diào)用時給出的參數(shù)(也就是傳遞的數(shù)據(jù))稱為實際參數(shù),簡稱實參。函數(shù)調(diào)用時,將實參的值傳遞給形參,相當(dāng)于一次賦值操作。
原則上講,實參的類型和數(shù)目要與形參保持一致。如果能夠進行自動類型轉(zhuǎn)換,或者進行了強制類型轉(zhuǎn)換,那么實參類型也可以不同于形參類型,例如將 int 類型的實參傳遞給 float 類型的形參就會發(fā)生自動類型轉(zhuǎn)換。
c語言中一個完整的函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,而且定義函數(shù)時兩者都是必不可少的。
函數(shù)定義的一般形式如下:
類型標識符
函數(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;
}
(1)素數(shù)判斷函數(shù):是返回1,否則返回0
int?prime(int?n){
int?i;
if(n2??!(n1)?||?n2)
return?0;
for(i=3;i*i=n;i+=2)
if(!(n%i))
return?0;
return?1;
}
(2)編寫排序函數(shù)(冒泡排序、選擇排序)
void?bubbling(int?*p,int?n){//冒泡
int?i,j,k;
for(i=0;in;i++)
for(j=1;jn;j++)
if(p[j]p[j-1])
k=p[j],p[j]=p[j-1],p[j-1]=k;
}
void?select(int?*p,int?n){//選擇
int?i,j,k;
for(n--,i=0;in;i++){
for(k=i,j=k+1;j=n;j++)
if(p[k]p[j])
k=j;
if(k-i)
j=p[k],p[k]=p[i],p[i]=j;
}
}
(3)查找函數(shù),找到返回下標,否則返回-1
int?find(int?*p,int?n,int?x){//順序
int?i;
for(i=0;in;i++)
if(p[i]==x)
return?i;
return?-1;
}
int?fihalf(int?*p,int?n,int?x){//折半,升序為例
int?l,r,m;
l=0,r=n-1;
while(m=(l+r)1,lr??p[m]-x)
p[m]x???l=m+1?:?r=m-1;
return?p[m]==x???m?:?-1;
}
(4)插入函數(shù),升序為例
需要準備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,輸入C語言代碼:int fun(){return 1;}。
3、編譯器運行test.cpp文件,此時成功調(diào)用fun()函數(shù)輸出了內(nèi)容。
1、首先,一個函數(shù)要想調(diào)用,就必須有函數(shù)的聲明和定義。聲明就是指在程序編譯的時候告訴編譯器,這是個內(nèi)部函數(shù)。聲明方式為:函數(shù)類型+函數(shù)名+函數(shù)參數(shù),并且以分號結(jié)尾。
2、函數(shù)的調(diào)用就在你需要用到它的地方調(diào)就可以了,并且將參數(shù)傳給它。
3、函數(shù)定義就是實現(xiàn)這個函數(shù)的功能。
希望對你有幫助!