衡阳派盒市场营销有限公司

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

C是模塊化程序設計語言

圖片

一、函數(shù)的定義

一般格式

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

程序舉例

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


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


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

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

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

返回語句

形式: return(表達式);

或 return 表達式;

或 return;

功能:

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

說明:

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

三、函數(shù)的調用

調用形式

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

說明:

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

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

函數(shù)的調用方式

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

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

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

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

庫函數(shù):

#include<*.h>

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

函數(shù)說明

一般形式:

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

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

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

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

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

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

形參與實參

  • 形式參數(shù):定義函數(shù)時函數(shù)名后面括號中的變量名
  • 實際參數(shù):調用函數(shù)時函數(shù)名后面括號中的表達式
例 比較兩個數(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. 若形參與實參類型不一致,自動按形參類型轉換———函數(shù)調用轉換
  5. 形參在函數(shù)被調用前不占內存;函數(shù)調用時為形參分配內存;調用結束,內存釋放

參數(shù)傳遞方式

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

特點:

  • 形參與實參占用不同的內存單元
  • 單向傳遞
例  交換兩個數(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ù)調用時,將數(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ù)的嵌套與遞歸調用

嵌套調用

C規(guī)定:函數(shù)定義不可嵌套,但可以嵌套調用函數(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

圖片

遞歸調用

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

圖片

說明

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

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

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

地址傳遞

  • 在主調函數(shù)與被調函數(shù)分別定義數(shù)組,且類型應一致
  • 形參數(shù)組大小(多維數(shù)組第一維)可不指定
  • 形參數(shù)組名是地址變量
例  兩個數(shù)組大小比較
a和b為有10個元素的整型數(shù)組
比較兩數(shù)組對應元素
變量n,m,k記錄a[i]>b[i], a[i]==b[i],
a[i]k,認為數(shù)組a>b
        若n<bn==k,認為數(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);
}

圖片

例  求學生的平均成績
 #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;
 }

圖片

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

    關注

    3

    文章

    4346

    瀏覽量

    62971
  • 程序控制
    +關注

    關注

    0

    文章

    14

    瀏覽量

    7110
  • 調用函數(shù)

    關注

    0

    文章

    11

    瀏覽量

    2349
收藏 人收藏

    評論

    相關推薦

    C51程序函數(shù)教程

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

    【實用】DSPC語言程序大全

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

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

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

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

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

    C語言程序設計實用教程之函數(shù)詳細介紹和應用

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

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

    本文檔的主要內容詳細介紹的是LED閃爍開發(fā)C語言常用的預處理命令和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ù)的詳細資料說明

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

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

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

    STM32 標準外設版USB驅動庫詳解(架構+文件+函數(shù)+使用說明+示例程序

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

    STM32零基礎學習-C語言復習函數(shù)(1)

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

    C程序流程設計選擇結構

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

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

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

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

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

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

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

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

    一個C程序至少包括一個函數(shù)C語言是一種廣泛應用于嵌入式系統(tǒng)和操作系統(tǒng)的程序設計語言。它的基本構造塊是
    的頭像 發(fā)表于 11-26 09:01 ?1270次閱讀
    大发888充值100元| 大发888娱乐游戏可以玩吗| 百家乐代理在线游戏可信吗网上哪家平台信誉好安全 | 娱乐场游戏| 百家乐具体怎么收费的| 百家乐投注最好方法| 缅甸百家乐官网赌| 百家乐官网10个人| 泸定县| 六合彩 开奖| 太阳城紫玉园| 网址百家乐的玩法技巧和规则| 百家乐开户送彩金28| 国际百家乐规则| 真人百家乐官网斗地主| 百家乐官网玩法皇冠现金网| 宁武县| 38坊| 大发888在线体育官网| 威尼斯人娱乐城代理合作| 广州百家乐筹码| 百家乐开户优惠多的平台是哪家| 百家乐天下第一缆| 百家乐交流群号| 同乐城百家乐官网娱乐城| 现场百家乐官网能赢吗| 缅甸百家乐官网娱乐| 百家乐官网5式直缆打法| 足球竞猜规则| 金花娱乐城注册| 龙都棋牌下载| 大发888官方 df888 gfxzylc8| 天津水果机定位器| 威尼斯人娱乐城平台打不开| 百家乐分| 百家乐三路法| 百家乐强弱走势图| 百家乐板路| 赤壁百家乐娱乐城| 巴比伦百家乐的玩法技巧和规则| 百家乐新送彩金|