知識點:
1.函式基礎
2.函式引數和返回值
3.形參和實參,變數的型別
4.函式宣告
5.函式遞迴
*************************=
一、函式基礎
函式的作用:封裝乙個常用的功能
定義函式的步驟:
1>明確函式的作用,起乙個有意義的名稱
2>確定函式的引數:想清楚呼叫函式的時候是否需要傳入外界的一些資料
3>確定函式的返回值:想清楚函式呼叫完畢後是否需要返回乙個值給函式呼叫者
1.函式的定義格式
返回值型別函式名(引數列表)
(1)功能函式
// 函式可以沒有形參play()
(2)返回值,引數
形參:定義函式的時候,函式後面()中的變數
實參:呼叫函式的時候,傳進去的值
#includedouble **erage(int v1, int
v2) // 變數v1、v2稱為「形式引數」,簡稱「形參」。 ()中的內容可以稱為「形參列表」
//任何c語言程式預設情況下,只會執行main函式
intmain()
建議:以後盡量把常用的**\功能封裝到乙個函式裡面去,這樣可以提高**重用率,可以提高可擴充套件性
2.函式作用
1)使程式結構清晰簡潔
2)部分**重複利用降低**冗餘
3)獨立的工作內容和模組
3.函式的分類
使用角度分類:
ascii c89 c99 c11
1)標準c庫函式,由系統實現好的一些列功能函式
如:printf, scanf, fabs, labs…
除c庫以外的函式稱為
第三方函式
2)使用者自定義函式,由使用者自定義的功能函式
從函式形式分類:
1)無參函式 void
2)有參函式
3)有返回值 對應型別
4)無返回值 void
4.函式說明
1)乙個程式有若干個檔案,每個檔案有若干個函式組成
2)c程式由main函式開始,也從main函式結束
3)源程式中的所有函式在結構上是平行的,互相獨立的
4)main函式可以呼叫其他函式,函式之間可以相互呼叫
*************************==
函式引數和返回值
2)呼叫過程中實參和形參
3.如果沒有引數時一般將引數列表置空
沒有引數時,引數列表一般填寫void
3.return 作用分析
1)當函式需要有返回值的時候,用來將結果返回
2)思考:如果函式沒有明確返回值的時候,是否可以使用? 見上得功能函式
3)return 的另外乙個作用是提前結束該函式,並且返回到函式呼叫者處,return後的**不會被執行
*************************==
形參和實參關係
1.例子:交換兩數
2.引數傳遞的方式和過程
1)值傳遞
2)位址傳遞
*************************==
全域性變數和區域性變數
全域性變數:共享資料
1.變數的分類
1)函式引數和內部變數稱為區域性變數
2)在函式外部的變數稱為全域性變數
2.作用域,生命週期(變數有效範圍)
1)區域性變數的作用域為當前函式,從變數開始到函式結束
2)全域性變數的作用域為所有檔案,從變數開始到程式結束
3.生命週期(變數的有效時間)
1)只在函式執行期間有效,一旦函式執行完畢後,變數將會被系統銷毀
2)全域性變數在整個程式執行期間有效,直到程式退出才會被系統銷毀
4.引數遮蔽
區域性變數遮蔽全域性變數
區域性變數和全域性變數的變數名一致
*************************==
函式宣告
1.函式宣告的作用
1)讓呼叫者知道如何呼叫
2)讓編譯器在編譯階段判斷函式呼叫是否正確
思考:函式宣告是否有必要?如果沒有宣告會如何(從引數和返回值方面思考)
2.宣告方式
宣告了函式的名字,引數個數和型別,返回值型別
*************************==
函式遞迴
例子:從前有座山…
1.什麼是遞迴
函式呼叫自身的過程
2.遞迴作用
遞迴經常被用於解決電腦科學的問題。
3.應用場合
(1)資料的定義是按遞迴定義的。(fibonacci函式)
(2)問題解法按遞迴演算法實現。(回溯)
(3)資料的結構形式是按遞迴定義的。
(樹的遍歷,圖的搜尋)
4.例項:
1)計算1+2+3+…+n
練習:1.用函式遞迴計算1*2*3*…*n的值
2.用函式遞迴輸入10進製,輸出2進製 1010
2)用函式遞迴計算斐波那切數列
1>示例:通過迴圈實現斐波那切數列
2> 通過遞迴實現
5.遞迴缺點
1)遞迴演算法解題相對常用的演算法如普通迴圈等,執行效率較低。
因此,應該盡量避免使用遞迴,除非沒有更好的演算法或者某種特定情況比
遞迴更為適合的時候。
2)在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。
遞迴次數過多容易造成棧溢位等。
補充:// 終端上用control+x可以退出死迴圈
// 函式呼叫自己本身可能會出現死迴圈
// 函式呼叫自己本身,稱為「遞迴」
C 語言筆記系列之八 建構函式
1.建構函式 作用 建立物件的時候,由系統自動完成物件的初始化工作,每建立乙個物件時,系統將自動呼叫該物件的建構函式。乙個物件若未設定建構函式,則系統會自動新增乙個無參無操作的建構函式,每個物件完成建立時必須呼叫建構函式。2.建構函式的表示 1 建構函式的函式名與其類名同名。2 建構函式是類的成員函...
c語言第八章函式
第八章函式 一 函式定義的一般形式 1.無參函式 型別識別符號 函式名 2.有參函式 型別識別符號 函式名 形式引數表列 二 函式引數和函式返回值 1.形參 在定義函式時函式名後面括號中的變數名 實參 主函式在呼叫乙個函式時,函式名後面括號中的引數 2.引數傳遞方式 值傳遞 單 指標傳遞 3.形參和...
C語言 八 陣列
一維陣列定義與使用 int array 10 定義乙個一維陣列,名字叫array,一共有10個元素,每個元素都是int型別的 array 0 20 array 1 30 array 9 80 陣列索引是從0開始的。陣列在記憶體的儲存方式 陣列在記憶體中就是一段連續的空間,每乙個元素的型別是一樣的。一...