c中的函數

來源:互聯網
上載者:User

標籤:

一、 什麼是函數

l 任何一個C語言程式都是由一個或者多個程式段(小程式)構成的,每個程式段都有自己的功能,我們一般稱這些程式段為“函數”。所以,你可以說C語言程式是由函數構成的。

l 比如你用C語言編寫了一個MP3播放器程式,那麼它的程式結構如所示:

 

 

二、 函數的定義1. 定義函數的目的

l 將一個常用的功能封裝起來,方便以後調用

 

2. 定義函數的步驟

l 函數名:函數叫什麼名字

l 函數體:函數是幹啥的,裡麵包含了什麼代碼

 

3. 格式

l 固定格式(很多語言的函數都是這麼寫的)

傳回值類型  函數名(形式參數列表) 

{

  函數體

}

l 舉例

定義一個函數,計算兩個整數的和

sum(int a, int b) 

{

int c = a + b;

}

 

三、 函數調用

l sum(10, 11); 引出傳回值

l 說明函數的調用過程

l 簡述return的作用

 

四、 函數的參數
  1. 形參和實參的基本概念
  2. 形參個數和實參一致:sum(10, 11, 12)
  3. 參數的傳遞是值傳遞
  4. 參數名不能跟函數內的局部變數同名
  5. 函數可以沒有參數:設計一個函數返回PI

 

五、 函數的傳回值
  1. 傳回值的基本概念、return的作用
  2. void
  3. return

l void可以省略return

l 可以多次使用return

l return後面不能有其他語句

  1. 函數的弱文法

l 如果沒有寫傳回值類型,預設是int

l 如果寫了傳回值,可以不返回

l 調用一個沒有定義過的函數

 

六、 定義函數的步驟
  1. 明確函數作用,起一個有意義的函數名稱
  2. 明確函數的參數和傳回值
  3. 舉例:

l 求兩個整數的和

l 列印一條橫線

l 列印N條橫線

 

七、 函數注意

l 不能嵌套定義函數

l 死迴圈調用,自己調用自己

l 不能重複定義、可以重複聲明

 

八、 函數的補充1. main函數

l 傳回值:0,正常退出;1,異常退出

2. printf函數

l #include

l 傳回值:字串的長度

 

九、 習題
  1. 編寫一個函數double avr(int a, int b),計算a和b的平均值
  2. 編寫一個函數int pows(int base, int n)返回base的n次方
  3. 編寫一個函數int pieAdd(int n),計算1+2+3+……+n的值並返回。比如pieAdd(3)的傳回值是1+2+3=6

 

十、 函數的聲明
  1. 函數的定義順序
  2. 函數的聲明作用:聲明和定義,類似於身份證和人的關係,編譯買機票、連結登機
  3. 只有函式宣告、沒有定義,編譯警告、連結報錯

 

十一、 .h檔案和.c檔案的分工
  1. 單檔案的壞處

l 一個檔案的內容太多,不利於閱讀、調試

l 多人修改同一個檔案出問題

l 公司裡面是團隊合作

 

  1. 將sum函數抽取到另一個.c檔案中

l 先直接調用sum函數,編譯警告、連結main.c錯誤

l #include “sum.c” , 編譯連結main.c,運行成功(畫圖分析.o檔案中的東西)

l 如果avr.c中使用sum.c,編譯連結main.c,運行程式(畫圖分析出錯原因)

 

  1. 在其他檔案中聲明sum函數

l int sum(int,int);  

l 編譯連結main.c

l 編譯連結sum.c

l 編譯連結main.c  sum.c,運行成功

l avr.c利用一樣的方法

 

  1. 將int sum(int,int)抽取到另外一個檔案中

l 不抽取聲明的壞處:增加新的函數了

l 抽取到.c檔案中?開發工具會將所有的.c進行編譯連結

l 抽取到.h檔案中

 

  1. 抽取步驟總結

l .c檔案寫函數的定義

l .h檔案寫函數的聲明

l 要想用我的函數,請包含我的.h檔案

l 好處分析

 

十二、 #include1. 預先處理指令簡介2. #include的作用

純粹是檔案拷貝

3. #include <stdio.h>

l stdio.h中有什嗎?連結的時候做了什麼事情

l <>和””的區別

4. #include的路徑問題

l 預設是同路徑,其他問題以後再討論

 

c中的函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.