在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

C程序流程設計之函數

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

C是模塊化程序設計語言

圖片

一、函數的定義

一般格式

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

程序舉例

例   空函數
  dummy()
 {  }


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


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

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

二、函數的返回值

返回語句

形式: return(表達式);

或 return 表達式;

或 return;

功能:

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

說明:

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

三、函數的調用

調用形式

函數名(實參表);

說明:

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

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

函數的調用方式

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

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

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

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

庫函數:

#include<*.h>

用戶自定義函數:函數類型說明

函數說明

一般形式:

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

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

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

  1. 若函數返值是char或int型,系統自動按int型處理
  2. 被調用函數定義出現在主調函數之前

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

四、函數參數及傳遞方式

形參與實參

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

參數傳遞方式

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

特點:

  • 形參與實參占用不同的內存單元
  • 單向傳遞
例  交換兩個數
#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;
}

圖片

五、函數的地址傳遞

方式:函數調用時,將數據的存儲地址作為參數傳遞給形參

特點:

  1. 形參與實參占用同樣的存儲單元
  2. “雙向”傳遞
  3. 實參和形參必須是地址常量或變量
例 交換兩個數
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);
}

圖片

圖片

六、函數的嵌套與遞歸調用

嵌套調用

C規定:函數定義不可嵌套,但可以嵌套調用函數

圖片

例   求三個數中最大數和最小數的差值
#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

圖片

遞歸調用

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

圖片

說明

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

七、數組作為函數參數

數組元素作函數實參—值傳遞

地址傳遞

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

圖片

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

    關注

    3

    文章

    4331

    瀏覽量

    62622
  • 程序控制
    +關注

    關注

    0

    文章

    14

    瀏覽量

    7084
  • 調用函數
    +關注

    關注

    0

    文章

    11

    瀏覽量

    2318
收藏 人收藏

    評論

    相關推薦

    C51程序函數教程

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

    【實用】DSPC語言程序大全

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

    C語言程序的main函數免費下載

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

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

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

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

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

    LED閃爍開發while循環函數和delay延時函數的資料概述

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

    C語言程序設計教程課件函數的詳細資料說明

    本文檔詳細介紹的是C語言程序設計教程課件函數的詳細資料說明主要內容包括了:1.概述,2.函數的定義,3.
    發表于 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'>函數</b>的詳細資料說明

    MySQL流程函數的操作方法

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

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

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

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

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

    C程序流程設計選擇結構

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

    C++基礎知識函數1

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

    C++基礎知識函數2

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

    c語言源程序main函數的位置

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

    一個c程序至少包括一個函數

    一個C程序至少包括一個函數C語言是一種廣泛應用于嵌入式系統和操作系統的程序設計語言。它的基本構造塊是
    的頭像 發表于 11-26 09:01 ?1143次閱讀
    主站蜘蛛池模板: 91综合在线| 中文在线三级中文字幕| 伊人久久大香线蕉综合7| 欧美一区二区影院| 伊人yinren6综合网色狠狠| 亚洲 另类 在线 欧美 制服| 亚洲三级免费观看| 国内精品久久久久影| 人人看人人做| 国产精品久久久久久免费播放| 你懂的视频在线看| 色视频免费在线| 成人国产精品一级毛片了| 噜噜噜噜噜噜色| 能看的黄网| 长腿丝袜美女被啪啪| 久久久久四虎国产精品| 久久天天躁狠狠躁夜夜爽| 一级毛片aaaaaa视频免费看| 狠狠色狠狠色| 久久99精品久久久久久秒播| www.一区二区三区.com| 狠狠色丁香婷婷久久| 国产免费小视频| 四虎影在永久地址在线观看| 永久免费看| 免费视频性| 好爽~~~~嗯~~~再快点明星| jlzz日本| 骚淫| 天天草天天干| 国产拳头交一区二区| 狠狠狠狼鲁欧美综合网免费| 69自拍视频| 三级免费观看| 欧美午夜免费观看福利片| 中文天堂最新版www| 丁香婷婷综合五月综合色啪| xxxx欧美| 久久久久久噜噜噜久久久精品 | 成人在线网|