【C語言】函式
C語言函式有利於理解何為面向過程,不同語言函式使用方法不同
函式是C語言的基本單位,類是Java,C#,C++的基本單位
一、為什麼需要函式
避免了大量重複性操作
有利於程式的模組化
例:
二、什麼叫函式
邏輯上:能夠完成特定功能的獨立的程式碼塊
物理上:接收資料(可無)
處理資料(可無)
返回處理(可無)
總結:函式是個工具,用於解決大量類似問題
可以當做一個黑匣子
三、函式的定義
返回值 函式的名字 (函式形參列表)
{
函式的執行體
}
-
函式定義的本質是詳細描述函式之所以可以實現某個特定功能的具體方法
-
return 表示式;
- return 用於終止被調函式,向主調函式返回表示式的值
- 如果表示式為空,則只終止被調函式
-
函式返回值的型別也稱為函式的型別,若函式名前的返回值型別和函式執行體return的型別不同,則以函式名前的返回值型別為準
四、函式的宣告
返回值 函式的名字 (函式形參列表); // 放在main函式前,分號不能丟棄
作用:
- 告訴編譯器即將可能出現的若干個字母代表的是一個函式
- 告訴編譯器即將可能出現的若干個字母所代表的函式的形參和返回值得具體情況
- 函式宣告是個語句,末尾要加分號
- 對
庫函式
的宣告是通過#include<庫函式所在的檔案的名字.h>
五、函式的分類
- 有參函式 和 無參函式
- 有返回值 和 無返回值
- 庫函式 和 自定義函式
- 值傳遞函式 和 地址傳遞函式(地址傳遞函式不存在)
- 普通函式 和 主函式
-
一個程式有且只能有一個主函式
-
主函式可以呼叫普通函式,反之不行 (原因)
因為main函式是入口函式,誰來呼叫它?
另外,main函式是整個程式的入口函式,假如允許呼叫main,那麼你呼叫main的程式碼寫在main裡面,豈不成了一個無限巢狀遞迴呼叫?
-
普通函式可以相互呼叫
-
主函式是程式的入口,也是程式的出口
-
六、形參和實參
1.形參(形式引數)
在函式定義中出現的引數可以看做是一個佔位符,它沒有資料,只能等到函式被呼叫時接收傳遞進來的資料,所以稱為形式引數,簡稱形參。
2.實參(實際引數)
函式被呼叫時給出的引數包含了實實在在的資料,會被函式內部的程式碼使用,所以稱為實際引數,簡稱實參。
使用注意:
- 個數相同
- 位置一一對應
- 型別相容
七、變數的作用域和儲存方式
1.按作用域:
1.全域性變數
在所有函式外部定義的變數
使用範圍:從定義位置開始到整個程式結束
2.區域性變數
在一個函式內部定義的變數或者函式的形參
使用範圍:只能在本函式內部使用
注意:全域性變數和區域性變數命名衝突時,全域性變數被遮蔽
2.按儲存方式(略):
靜態變數
自動變數
暫存器變數