0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C程序流程設(shè)計之函數(shù)

汽車電子技術(shù) ? 來源:嵌入式悅翔園 ? 作者: JamesBin ? 2023-02-17 14:11 ? 次閱讀

C是模塊化程序設(shè)計語言

圖片

一、函數(shù)的定義

一般格式

函數(shù)類型     函數(shù)名(形參類型說明表)
{
  說明部分
  語句部分
}

程序舉例

例   空函數(shù)
  dummy()
 {  }


例   無參函數(shù)
  printstar()
 {   printf(“**********\\n”);   }
或
 printstar(void )
 {   printf(“**********\\n”);   }


例   有參函數(shù)(現(xiàn)代風(fēng)格)
  int max(int x, y)
  {    int z;
      z=x>y?x:y;
      return(z);
  }

例   有參函數(shù)(傳統(tǒng)風(fēng)格)
  int max(x,y)
  int x,y;
 {    int z;
      z=x>y?x:y;
      return(z);
 }

二、函數(shù)的返回值

返回語句

形式: return(表達(dá)式);

或 return 表達(dá)式;

或 return;

功能:

使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中,同時把返值帶給調(diào)用函數(shù)

說明:

  1. 函數(shù)中可有多個return語句
    
  2. 若無return語句,遇}時,自動返回調(diào)用函數(shù)
    
  3. 若函數(shù)類型與return語句中表達(dá)式值的類型不一致,按前者為準(zhǔn),自動轉(zhuǎn)換------函數(shù)調(diào)用轉(zhuǎn)換
    
  4. void型函數(shù)
    
例   無返回值函數(shù)
  void   swap(int x,int y )
 {    int temp;
      temp=x;
      x=y;
     y=temp;
 }

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

調(diào)用形式

函數(shù)名(實參表);

說明:

實參與形參個數(shù)相等,類型一致,按順序一一對應(yīng)

實參表求值順序,因系統(tǒng)而定(TurboC 自右向左)

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

函數(shù)語句:
   例   printstar();
          printf(“Hello,World!\\n”);

函數(shù)表達(dá)式:
  例    m=max(a,b)*2;

函數(shù)參數(shù):
  例     printf(“%d”,max(a,b));
           m=max(a,max(b,c));

對被調(diào)用函數(shù)要求:必須是已存在的函數(shù)

庫函數(shù):

#include<*.h>

用戶自定義函數(shù):函數(shù)類型說明

函數(shù)說明

一般形式:

函數(shù)類型    函數(shù)名(形參類型  [形參名],….. );
 或          函數(shù)類型    函數(shù)名();

作用:告訴編譯系統(tǒng)函數(shù)類型、參數(shù)個數(shù)及類型,以便檢驗函數(shù)定義與函數(shù)說明不同

函數(shù)說明位置:程序的數(shù)據(jù)說明部分(函數(shù)內(nèi)或外)下列情況下,可不作函數(shù)說明

  1. 若函數(shù)返值是char或int型,系統(tǒng)自動按int型處理
  2. 被調(diào)用函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前

有些系統(tǒng)(如BorlandC++)要求函數(shù)說明指出函數(shù)返值類型和形參類型,并且對void和int型函數(shù)也要進行函數(shù)說明

四、函數(shù)參數(shù)及傳遞方式

形參與實參

  • 形式參數(shù):定義函數(shù)時函數(shù)名后面括號中的變量名
  • 實際參數(shù):調(diào)用函數(shù)時函數(shù)名后面括號中的表達(dá)式
例 比較兩個數(shù)并輸出大者
main()
{   int a,b,c;
    scanf("%d,%d",&a,&b);
    c=max(a,b);
    printf("Max is %d",c);
}
max(int  x, int  y)
{   int z;
    z=x>y?x:y;
    return(z);
}

圖片

說明:

  1. 實參必須有確定的值
  2. 形參必須指定類型
  3. 形參與實參類型一致,個數(shù)相同
  4. 若形參與實參類型不一致,自動按形參類型轉(zhuǎn)換———函數(shù)調(diào)用轉(zhuǎn)換
  5. 形參在函數(shù)被調(diào)用前不占內(nèi)存;函數(shù)調(diào)用時為形參分配內(nèi)存;調(diào)用結(jié)束,內(nèi)存釋放

參數(shù)傳遞方式

方式:函數(shù)調(diào)用時,為形參分配單元,并將實參的值復(fù)制到形參中;調(diào)用結(jié)束,形參單元被釋放,實參單元仍保留并維持原值

特點:

  • 形參與實參占用不同的內(nèi)存單元
  • 單向傳遞
例  交換兩個數(shù)
#include 
main()
{   int x=7,y=11;
    printf("x=%d,\\ty=%d\\n",x,y);
    printf("swapped:\\n");
    swap(x,y);
    printf("x=%d,\\ty=%d\\n",x,y);
}
swap(int a,int b)
{   int temp;
    temp=a; a=b; b=temp;
}

圖片

五、函數(shù)的地址傳遞

方式:函數(shù)調(diào)用時,將數(shù)據(jù)的存儲地址作為參數(shù)傳遞給形參

特點:

  1. 形參與實參占用同樣的存儲單元
  2. “雙向”傳遞
  3. 實參和形參必須是地址常量或變量
例 交換兩個數(shù)
swap(p1,p2)
int *p1,*p2;
{ int p;
   p=*p1;
   *p1=*p2;
   *p2=p;
}
main()
{int a,b;
  scanf("%d,%d",&a,&b);
  printf(“a=%d,b=%d\\n”,a,b);
  printf(“swapped:\\n”);
  swap(&a,&b);
  printf(”a=%d,b=%d\\n",a,b);
}

圖片

圖片

六、函數(shù)的嵌套與遞歸調(diào)用

嵌套調(diào)用

C規(guī)定:函數(shù)定義不可嵌套,但可以嵌套調(diào)用函數(shù)

圖片

例   求三個數(shù)中最大數(shù)和最小數(shù)的差值
#include 
 int dif(int x,int y,int z);
 int max(int x,int y,int z);
 int min(int x,int y,int z);
void main()
{ int a,b,c,d;
    scanf("%d%d%d",&a,&b,&c);
    d=dif(a,b,c);
    printf("Max-Min=%d\\n",d);
 }


int dif(int x,int y,int z)
{  return max(x,y,z)-min(x,y,z); }
int max(int x,int y,int z)
{    int r;
       r=x>y?x:y;
       return(r>z?r:z);
 }
int min(int x,int y,int z)
{   int r;
      r=xreturn(r

圖片

遞歸調(diào)用

定義:函數(shù)直接或間接的調(diào)用自身叫函數(shù)的遞歸調(diào)用

圖片

說明

C編譯系統(tǒng)對遞歸函數(shù)的自調(diào)用次數(shù)沒有限制,每調(diào)用函數(shù)一次,在內(nèi)存堆棧區(qū)分配空間,用于存放函數(shù)變量、返回值等信息,所以遞歸次數(shù)過多,可能引起堆棧溢出

七、數(shù)組作為函數(shù)參數(shù)

數(shù)組元素作函數(shù)實參—值傳遞

地址傳遞

  • 在主調(diào)函數(shù)與被調(diào)函數(shù)分別定義數(shù)組,且類型應(yīng)一致
  • 形參數(shù)組大小(多維數(shù)組第一維)可不指定
  • 形參數(shù)組名是地址變量
例  兩個數(shù)組大小比較
a和b為有10個元素的整型數(shù)組
比較兩數(shù)組對應(yīng)元素
變量n,m,k記錄a[i]>b[i], a[i]==b[i],
a[i]k,認(rèn)為數(shù)組a>b
        若n<bn==k,認(rèn)為數(shù)組a==b
#include 
main()
{    int a[10],b[10],i,n=0,m=0,k=0;
     printf("Enter array a:\\n");
     for(i=0;i<10;i++)
  scanf("%d",&a[i]);
    printf("Enter array b:\\n");
     for(i=0;i<10;i++)
  scanf("%d",&b[i]);
     for(i=0;i<10;i++)
     {   if(large(a[i],b[i])==1)  n=n+1;
         else if(large(a[i],b[i])==0)  m=m+1;
         else k=k+1;
     }
     /*  Output  */
}


int  large(int x,int y)
{   int flag;
    if(x>y)  flag=1;
    else if(x-1;
    else flag=0;
    return(flag);
}

圖片

例  求學(xué)生的平均成績
 #include 
 float average(int stu[10], int n);
 void main()
{ int score[10], i;
    float   av;
    printf("Input  10  scores:\\n");
    for( i=0; i<10; i++ )
        scanf("%d", &score[i]);
    av=average(score,10);
    printf("Average  is:%.2f", av);
 }

float   average(int stu[10], int n)
{ int i;
    float av,total=0;
    for( i=0; ireturn av;
 }

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • 程序控制
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7058
  • 調(diào)用函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    2288
收藏 人收藏

    評論

    相關(guān)推薦

    C51程序函數(shù)教程

    函數(shù)C51程序的基本組成部分,C51程序的全部工作都是由各式各樣的函數(shù)完成的。本章主要介紹
    發(fā)表于 06-12 23:46 ?54次下載

    【實用】DSPC語言程序大全

    DSPC語言程序大全
    發(fā)表于 04-09 17:55 ?23次下載

    C語言程序的main函數(shù)免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言程序的main函數(shù)免費下載。
    發(fā)表于 09-26 14:48 ?3次下載

    C語言入門教學(xué)函數(shù)資料總結(jié)免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言入門教學(xué)函數(shù)資料總結(jié)免費下載內(nèi)容包括了:1 庫函數(shù)2 函數(shù)的定義和返回值3
    發(fā)表于 10-23 17:53 ?3次下載

    C語言程序設(shè)計實用教程之函數(shù)詳細(xì)介紹和應(yīng)用

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言程序設(shè)計實用教程之函數(shù)詳細(xì)介紹和應(yīng)用內(nèi)容包括了:1 模塊化程序設(shè)計與函數(shù)2
    發(fā)表于 10-31 18:04 ?2次下載
    <b class='flag-5'>C</b>語言<b class='flag-5'>程序</b>設(shè)計實用教程之<b class='flag-5'>函數(shù)</b>詳細(xì)介紹和應(yīng)用

    LED閃爍開發(fā)while循環(huán)函數(shù)和delay延時函數(shù)的資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是LED閃爍開發(fā)C語言常用的預(yù)處理命令和while循環(huán)函數(shù)及delay延時函數(shù)的資料概述免費下載。
    發(fā)表于 11-12 08:00 ?15次下載
    LED閃爍開發(fā)<b class='flag-5'>之</b>while循環(huán)<b class='flag-5'>函數(shù)</b>和delay延時<b class='flag-5'>函數(shù)</b>的資料概述

    C語言程序設(shè)計教程課件函數(shù)的詳細(xì)資料說明

    本文檔詳細(xì)介紹的是C語言程序設(shè)計教程課件函數(shù)的詳細(xì)資料說明主要內(nèi)容包括了:1.概述,2.函數(shù)的定義,3.
    發(fā)表于 02-28 10:35 ?3次下載
    <b class='flag-5'>C</b>語言<b class='flag-5'>程序</b>設(shè)計教程課件<b class='flag-5'>之</b><b class='flag-5'>函數(shù)</b>的詳細(xì)資料說明

    MySQL流程函數(shù)的操作方法

    流程函數(shù)是一類很常用的函數(shù),我們可以通過流程函數(shù)在SQL語句中實現(xiàn)條件選擇,能實現(xiàn)我們想要的條件判斷。下表列出了MySQL中的
    的頭像 發(fā)表于 04-16 17:17 ?2917次閱讀
    MySQL<b class='flag-5'>流程</b><b class='flag-5'>函數(shù)</b>的操作方法

    STM32 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動庫詳解(架構(gòu)+文件+函數(shù)+使用說明+示例程序

    STM32 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動庫詳解(架構(gòu)+文件+函數(shù)+使用說明+示例程序
    發(fā)表于 12-08 20:36 ?0次下載
    STM32 <b class='flag-5'>之</b> 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動庫詳解(架構(gòu)+文件+<b class='flag-5'>函數(shù)</b>+使用說明+示例<b class='flag-5'>程序</b>)

    STM32零基礎(chǔ)學(xué)習(xí)-C語言復(fù)習(xí)函數(shù)(1)

    零基礎(chǔ)學(xué)習(xí)STM32單片機(目標(biāo)兩個月精通STM32)之前有了解的32的開發(fā),但基礎(chǔ)不深,接下來從復(fù)習(xí)一下C語言的函數(shù)、指針和結(jié)構(gòu)體、單片機的位操作方面的知識,有利于自己后面的學(xué)習(xí)(^_-)。標(biāo)題C
    發(fā)表于 01-13 14:12 ?0次下載
    STM32零基礎(chǔ)學(xué)習(xí)-<b class='flag-5'>C</b>語言復(fù)習(xí)<b class='flag-5'>之</b><b class='flag-5'>函數(shù)</b>(1)

    C程序流程設(shè)計選擇結(jié)構(gòu)

    程序流程圖又稱程序框圖,是用統(tǒng)一規(guī)定的標(biāo)準(zhǔn)符號描述程序運行具體步驟的圖形表示。程序框圖的設(shè)計是在處理流程
    的頭像 發(fā)表于 02-17 14:26 ?973次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>程序</b><b class='flag-5'>流程</b>設(shè)計<b class='flag-5'>之</b>選擇結(jié)構(gòu)

    C++基礎(chǔ)知識函數(shù)1

    函數(shù)C++ 中的一個重要概念,它可以讓我們將一段代碼封裝起來,然后在需要的時候調(diào)用它。C++ 中的函數(shù)有以下幾個特點: * 函數(shù)
    的頭像 發(fā)表于 04-03 10:34 ?459次閱讀

    C++基礎(chǔ)知識函數(shù)2

    C++中,我們可以使用inline關(guān)鍵字來定義內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)是一種特殊的函數(shù),它在編譯時會被直接嵌入到調(diào)用它的代碼中,從而避免了函數(shù)調(diào)
    的頭像 發(fā)表于 04-03 10:34 ?450次閱讀

    c語言源程序main函數(shù)的位置

    C語言源程序中的main函數(shù)程序的入口點,它被認(rèn)為是C語言程序的起點。在執(zhí)行
    的頭像 發(fā)表于 11-24 10:23 ?1593次閱讀

    一個c程序至少包括一個函數(shù)

    一個C程序至少包括一個函數(shù)C語言是一種廣泛應(yīng)用于嵌入式系統(tǒng)和操作系統(tǒng)的程序設(shè)計語言。它的基本構(gòu)造塊是
    的頭像 發(fā)表于 11-26 09:01 ?860次閱讀