C語言函數
一、是什么?
是指編程中對一塊功能代碼的封裝,可以理解一個程序片段
二、有什么用?
可以封裝代碼,方便調用,提高復用性
三、怎么用?
定義: ?返回值類型 ?函數名(形參類型 參數名1....){代碼塊 ? 返回值}
調用: ?函數名(實參1,實參2....);
四、什么時候用?
當需要取封裝一段代碼實現一個對應的功能時候
五、有什么特點?
1.返回值類型不定義,默認是int,如果不需要具體返回值類型,用void,return可以省略.
2.是否要定義參數 看是否有未知內容參與運算,調用時參數必須對應,參數傳遞的是值
3.return可以有多個,但是如果執行到return 就不會再執行后面的代碼,函數執行結束.
4.函數不調用不執行,執行順序看調用順序,
5.函數必須定義才能調用,但不能重復定義,不能嵌套定義.不能自己調用自己(死遞歸)
6.C語言中不允許作嵌套的函數定義 ,但是可以嵌套函數調用
函數的聲明
一、是什么?
是對編譯器的一個說明,用于告知系統在本函數中所調用的函數是什么類型.
如:定義的函數的返回值類型是什么,參數類型是什么.
二、有什么用?
可以告訴編譯器我將定義什么函數,從而讓別的函數能方便調用
三、怎么用?
把函數去掉{},拷貝到聲明區域(函數里或外)就可以.
四、什么時候用?
當需要定義函數的時候
五、有什么特點?
1.僅聲明可以不創建函數,但要調用必須定義函數
2.聲明可以只有參數類型,省略參數名如:int add(int);
3.函數使用前應該聲明,不聲明的話默認為返回值為int類型來處理,很可能出錯
4.聲明區域可以在其他函數里或者函數外.只要放在本函數調用之前就可以
5.函數的返回值是什么類型就要用什么類型的變量去接
6.當被調函數的函數定義出現在主調函數之前時,在主調函數中也可以不對被調函數再作說明而 直接調用。
C語言的頭文件
一、是什么?
是C語言中以.h結尾的文件.如:stdio.h
二、有什么用?
用于聲明(描述)一個函數,把多個代碼文件(如:a.c.....b.c等)中的函數,聲明在這個文件中,以便于使用已經封裝好的函數
三、怎么用?
定義: ?新建一個以.h結尾的文件,把需要用到的函數的聲明直接放在里面.
引用:自定義的頭文件:#include "頭文件名.h"
編譯器類庫里的頭文件:#include<頭文件名.h>
四、什么時候用?
當程序需要由多個c文件組成時
五、有什么特點?
1.在頭文件中僅作聲明,不做具體實現
2.在頭文件有聲明只能確保編譯成功成.o文件,但不確保能鏈接成功
3.自定義的頭文件引用時必須要有路徑
#include的用法
一、是什么?
是C語言中的一個預處理指令
二、有什么用?
用于把一個文件的內容拷貝到所在位置
三、怎么用?
引用:自定義的文件:#include "文件路徑和名稱"
編譯器類庫里的文件:#include<文件名>
四、什么時候用?
當程序需要用到別的文件時
五、有什么特點?
1.可以定義在函數內也可以在函數外
include可以包含頭文件,也可以包含文本文件。include不一定非要寫在第一行
2.必須包含路徑.省略或./表示當前路徑 ? /開頭表示絕對路徑 ?../表示上一層路徑
3.以#開頭,后面不能加分號
include 語句之后不需要加 ";"(因為#include它使一個預處理指令,不是一個語句)
3.必須定義在要使用之前,否則可以編譯通過生成.o文件,但不能鏈接成功
4.#include " " 包含的是一個用戶定義的文件,可以是頭文件,也可是普通文件
1、#include " "在當前文件所在的路徑下查找 2、如果上面沒有找,到編譯器include路徑查找 3、如果編譯器include路徑下沒有找到,系統的include路徑下查找 4、如果上面三個都沒有找到就報錯了。
#include <>包含一個系統(編譯器自帶)的頭文件1、編譯器的include路徑下查找2、如果沒有找到就系統include路徑下查找3、如果都沒有找到就報錯
形參和實參
定義函數的時候,函數名后面小括號中的參數,簡稱形參形式參數是什么樣類型的數據,那么實際參數也必須是什么樣的類型
函數內部不可以定義與函數形參同名的變量,因為形參與函數的代碼是一個代碼塊
調用函數的時候,函數名后面小括號中的參數,簡稱實參
發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主 調函數向被調函數的數據傳送。
參數的傳遞過程:
1.形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因 此,形參只有在函數內部有效。函數調用結束返回主調函數后則不能再使用該形參變量。
2.實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3.實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配”的錯誤。
函數的返回值
函數的值只能通過return語句返回主調函數。
return語句的一般形式為:return表達式;
或者為:return (表達式);
return的功能是計算表達式的值,并返回給主調函數!