中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何在C語(yǔ)言項(xiàng)目中自定義函數(shù)-創(chuàng)新互聯(lián)

本篇文章為大家展示了如何在C語(yǔ)言項(xiàng)目中自定義函數(shù),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)建站為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括網(wǎng)站建設(shè)、網(wǎng)站制作、成都app軟件開(kāi)發(fā)公司微信小程序開(kāi)發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來(lái)大量新的創(chuàng)意。 

C語(yǔ)言無(wú)參函數(shù)的定義


如果函數(shù)不接收用戶傳遞的數(shù)據(jù),那么定義時(shí)可以不帶參數(shù)。如下所示:


dataType functionName(){
  //body
}
  • dataType 是返回值類型,它可以是C語(yǔ)言中的任意數(shù)據(jù)類型,例如 int、float、char 等。

  • functionName 是函數(shù)名,它是標(biāo)識(shí)符的一種,命名規(guī)則和標(biāo)識(shí)符相同。函數(shù)名后面的括號(hào)( )不能少。

  • body 是函數(shù)體,它是函數(shù)需要執(zhí)行的代碼,是函數(shù)的主體部分。即使只有一個(gè)語(yǔ)句,函數(shù)體也要由{ }包圍。

  • 如果有返回值,在函數(shù)體中使用 return 語(yǔ)句返回。return 出來(lái)的數(shù)據(jù)的類型要和 dataType 一樣。

例如,定義一個(gè)函數(shù),計(jì)算從 1 加到 100 的結(jié)果:


int sum(){
  int i, sum=0;
  for(i=1; i<=100; i++){
    sum+=i;
  }
  return sum;
}

累加結(jié)果保存在變量sum中,最后通過(guò)return語(yǔ)句返回。sum 是 int 型,返回值也是 int 類型,它們一一對(duì)應(yīng)。

return是C語(yǔ)言中的一個(gè)關(guān)鍵字,只能用在函數(shù)中,用來(lái)返回處理結(jié)果。

將上面的代碼補(bǔ)充完整:


#include <stdio.h>
int sum(){
  int i, sum=0;
  for(i=1; i<=100; i++){
    sum+=i;
  }
  return sum;
}
int main(){
  int a = sum();
  printf("The sum is %d\n", a);
  return 0;
}

運(yùn)行結(jié)果:
The sum is 5050

函數(shù)不能嵌套定義,main 也是一個(gè)函數(shù)定義,所以要將 sum 放在 main 外面。函數(shù)必須先定義后使用,所以 sum 要放在 main 前面。


注意:main 是函數(shù)定義,不是函數(shù)調(diào)用。當(dāng)可執(zhí)行文件加載到內(nèi)存后,系統(tǒng)從 main 函數(shù)開(kāi)始執(zhí)行,也就是說(shuō),系統(tǒng)會(huì)調(diào)用我們定義的 main 函數(shù)。


無(wú)返回值函數(shù)


有的函數(shù)不需要返回值,或者返回值類型不確定(很少見(jiàn)),那么可以用 void 表示,例如:


void hello(){
  printf ("Hello,world \n");
  //沒(méi)有返回值就不需要 return 語(yǔ)句
}

void是C語(yǔ)言中的一個(gè)關(guān)鍵字,表示“空類型”或“無(wú)類型”,絕大部分情況下也就意味著沒(méi)有 return 語(yǔ)句。


C語(yǔ)言有參函數(shù)的定義

如果函數(shù)需要接收用戶傳遞的數(shù)據(jù),那么定義時(shí)就要帶上參數(shù)。如下所示:


dataType functionName( dataType1 param1, dataType2 param2 ... ){
  //body
}

dataType1 param1, dataType2 param2 ...是參數(shù)列表。函數(shù)可以只有一個(gè)參數(shù),也可以有多個(gè),多個(gè)參數(shù)之間由,分隔。參數(shù)本質(zhì)上也是變量,定義時(shí)要指明類型和名稱。與無(wú)參函數(shù)的定義相比,有參函數(shù)的定義僅僅是多了一個(gè)參數(shù)列表。

數(shù)據(jù)通過(guò)參數(shù)傳遞到函數(shù)內(nèi)部進(jìn)行處理,處理完成以后再通過(guò)返回值告知函數(shù)外部。

更改上面的例子,計(jì)算從 m 加到 n 的結(jié)果:


int sum(int m, int n){
  int i, sum=0;
  for(i=m; i<=n; i++){
    sum+=i;
  }
  return sum;
}

參數(shù)列表中給出的參數(shù)可以在函數(shù)體中使用,使用方式和普通變量一樣。

調(diào)用 sum() 函數(shù)時(shí),需要給它傳遞兩份數(shù)據(jù),一份傳遞給 m,一份傳遞給 n。你可以直接傳遞整數(shù),例如:


int result = sum(1, 100); //1傳遞給m,100傳遞給n

也可以傳遞變量:


int begin = 4;
int end = 86;
int result = sum(begin, end); //begin傳遞給m,end傳遞給n

也可以整數(shù)和變量一起傳遞:


int num = 33;
int result = sum(num, 80); //num傳遞給m,80傳遞給n

函數(shù)定義時(shí)給出的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參;函數(shù)調(diào)用時(shí)給出的參數(shù)(也就是傳遞的數(shù)據(jù))稱為實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。函數(shù)調(diào)用時(shí),將實(shí)參的值傳遞給形參,相當(dāng)于一次賦值操作。

原則上講,實(shí)參的類型和數(shù)目要與形參保持一致。如果能夠進(jìn)行自動(dòng)類型轉(zhuǎn)換,或者進(jìn)行了強(qiáng)制類型轉(zhuǎn)換,那么實(shí)參類型也可以不同于形參類型,例如將 int 類型的實(shí)參傳遞給 float 類型的形參就會(huì)發(fā)生自動(dòng)類型轉(zhuǎn)換。

將上面的代碼補(bǔ)充完整:


#include <stdio.h>
int sum(int m, int n){
  int i, sum=0;
  for(i=m; i<=n; i++){
    sum+=i;
  }
  return sum;
}
int main(){
  int begin = 5, end = 86;
  int result = sum(begin, end);
  printf("The sum from %d to %d is %d\n", begin, end, result);
  return 0;
}

運(yùn)行結(jié)果:
The sum from 5 to 86 is 3731

定義 sum() 時(shí),參數(shù) m、n 的值都是未知的;調(diào)用 sum() 時(shí),將 begin、end 的值分別傳遞給 m、n,這和給變量賦值的過(guò)程是一樣的,它等價(jià)于:


m = begin;
n = end;

函數(shù)不能嵌套定義

強(qiáng)調(diào)一點(diǎn),C語(yǔ)言不允許函數(shù)嵌套定義;也就是說(shuō),不能在一個(gè)函數(shù)中定義另外一個(gè)函數(shù),必須在所有函數(shù)之外定義另外一個(gè)函數(shù)。main() 也是一個(gè)函數(shù)定義,也不能在 main() 函數(shù)內(nèi)部定義新函數(shù)。

下面的例子是錯(cuò)誤的:


#include <stdio.h>
void func1(){
  printf("http://c.biancheng.net");
  void func2(){
    printf("C語(yǔ)言小白變怪獸");
  }
}
int main(){
  func1();
  return 0;
}

有些初學(xué)者認(rèn)為,在 func1() 內(nèi)部定義 func2(),那么調(diào)用 func1() 時(shí)也就調(diào)用了 func2(),這是錯(cuò)誤的。

正確的寫法應(yīng)該是這樣的:


#include <stdio.h>
void func2(){
  printf("C語(yǔ)言小白變怪獸");
}
void func1(){
  printf("http://c.biancheng.net");
  func2();
}
int main(){
  func1();
  return 0;
}

func1()、func2()、main() 三個(gè)函數(shù)是平行的,誰(shuí)也不能位于誰(shuí)的內(nèi)部,要想達(dá)到「調(diào)用 func1() 時(shí)也調(diào)用 func2()」的目的,必須將 func2() 定義在 func1() 外面,并在 func1() 內(nèi)部調(diào)用 func2()。


有些編程語(yǔ)言是允許函數(shù)嵌套定義的,例如 JavaScript,在 JavaScript 中經(jīng)常會(huì)使用函數(shù)的嵌套定義。


遞歸函數(shù)(兩個(gè)簡(jiǎn)易的遞歸調(diào)用)

1,階乘

函數(shù)的聲明

int MyFun(int num);

函數(shù)的實(shí)現(xiàn)

int MyFun(int num){
//  普通函數(shù)
//  int sum1=1;
//  for (int i=1; i<=num; i++) {
//    sum1*=i;
//  }
//  return sum1;
  // 遞歸調(diào)用
  if (num==1||num==0) {
    return 1;
  }else {
    return num*MyFun(num-1);
  
  }
}

調(diào)用

 printf("sum=%d\n",MyFun(6));

運(yùn)行效果

 如何在C語(yǔ)言項(xiàng)目中自定義函數(shù)

2,菲波那切數(shù)列數(shù)列

函數(shù)的聲明

int fbsnq(int num);

函數(shù)的實(shí)現(xiàn)

int fbsnq(int num){
  // 遞歸
  if(num==1||num==2){
    return 1;
  }
  return fbsnq(num-1)+fbsnq(num-2);
  //普通
//  int n1=1,n2=1,temp=0;
//  if (num==1||num==2) {
//    return 1;
//  }
//  int i=2;
//  for(;i<num;i++){
//    temp=n1+n2;
//    n1=n2;
//    n2=temp;
//  }
//  return temp;
}

函數(shù)的調(diào)用

  for (int i=1; i<=30; i++) {
    if ((i-1)%5==0) {
      printf("\n");
    }
      printf("%10d", fbsnq(i));
  }

  printf("\n\n");

運(yùn)行結(jié)果

如何在C語(yǔ)言項(xiàng)目中自定義函數(shù)

上述內(nèi)容就是如何在C語(yǔ)言項(xiàng)目中自定義函數(shù),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)題目:如何在C語(yǔ)言項(xiàng)目中自定義函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.rwnh.cn/article36/igdsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站排名、App開(kāi)發(fā)企業(yè)網(wǎng)站制作、營(yíng)銷型網(wǎng)站建設(shè)標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
邵武市| 新野县| 紫阳县| 鲁甸县| 盐源县| 蕲春县| 红桥区| 延长县| 广河县| 大理市| 西和县| 方城县| 云安县| 衡山县| 绥德县| 乌审旗| 南投市| 天峻县| 栾城县| 辉南县| 镇宁| 云浮市| 武宁县| 门源| 双城市| 大方县| 嘉善县| 津南区| 阿巴嘎旗| 保康县| 叶城县| 潼关县| 盐山县| 荃湾区| 青州市| 彭水| 监利县| 桐庐县| 阿图什市| 垫江县| 平武县|