C語言第八節函數

  1. 什麼是函數

  • 任何一個C語言程序都是由一個或者多個程序段(小程序)構成的,每一個程序段都有本身的功能,咱們通常稱這些程序段爲"函數"。因此,你能夠說C語言程序是由函數構成的。
  • 好比你用C語言編寫了一個MP3播放器程序,那麼它的程序結構以下圖所示:

 

  1. 函數的定義

  1. 定義函數的目的

  • 將一個經常使用的功能封裝起來,方便之後調用

 

  1. 定義函數的步驟

  • 函數名:函數叫什麼名字
  • 函數體:函數是幹啥的,裏面包含了什麼代碼

 

  1. 格式

  • 固定格式(不少語言的函數都是這麼寫的)

返回值類型函數名(形式參數列表) 小程序

{函數

    函數體工具

} 開發工具

  • 舉例

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

sum(int a, int b)設計

{3d

    int c = a + b;調試

}blog

 

  1. 函數調用

  • sum(10, 11); 引出返回值
  • 說明函數的調用過程
  • 簡述return的做用

 

  1. 函數的參數

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

 

  1. 函數的返回值

  1. 返回值的基本概念、return的做用
  2. void
  3. return
  • void能夠省略return
  • 能夠屢次使用return
  • return後面不能有其餘語句
  1. 函數的弱語法
  • 若是沒有寫返回值類型,默認是int
  • 若是寫了返回值,能夠不返回
  • 調用一個沒有定義過的函數

 

  1. 定義函數的步驟

  1. 明確函數做用,起一個有意義的函數名稱
  2. 明確函數的參數和返回值
  3. 舉例:
  • 求兩個整數的和
  • 打印一條橫線
  • 打印N條橫線

 

  1. 函數注意

  • 不能嵌套定義函數
  • 死循環調用,本身調用本身
  • 不能重複定義、能夠重複聲明

 

  1. 函數的補充

  1. main函數

  • 返回值:0,正常退出;1,異常退出
  1. printf函數

  • #include
  • 返回值:字符串的長度

 

  1. 習題

  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. 函數的聲明

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

 

  1. .h文件和.c文件的分工

  1. 單文件的壞處
  • 一個文件的內容太多,不利於閱讀、調試
  • 多人修改同一個文件出問題
  • 公司裏面是團隊合做

 

  1. 將sum函數抽取到另外一個.c文件中
  • 先直接調用sum函數,編譯警告、連接main.c錯誤
  • #include "sum.c" , 編譯連接main.c,運行成功(畫圖分析.o文件中的東西)
  • 若是avr.c中使用sum.c,編譯連接main.c,運行程序(畫圖分析出錯緣由)

 

  1. 在其餘文件中聲明sum函數
  • int sum(int,int);
  • 編譯連接main.c
  • 編譯連接sum.c
  • 編譯連接main.c sum.c,運行成功
  • avr.c利用同樣的方法

 

  1. 將int sum(int,int)抽取到另一個文件中
  • 不抽取聲明的壞處:增長新的函數了
  • 抽取到.c文件中?開發工具會將全部的.c進行編譯連接
  • 抽取到.h文件中

 

  1. 抽取步驟總結
  • .c文件寫函數的定義
  • .h文件寫函數的聲明
  • 要想用個人函數,請包含個人.h文件
  • 好處分析

 

  1. #include

  1. 預處理指令簡介

  2. #include的做用

純粹是文件拷貝開發

  1. #include <stdio.h>

  • stdio.h中有什麼?連接的時候作了什麼事情
  • <>和""的區別
  1. #include的路徑問題

  • 默認是同路徑,其餘問題之後再討論

 內容來源:傳智播客

相關文章
相關標籤/搜索