C語言是由許許多多函數(shù)組成的.函數(shù)分為聲明和實現(xiàn),在實際開發(fā)中兩者是分開兩個文件來保存的,函數(shù)名.h/函數(shù)名.c,兩個文件的函數(shù)名要一致.
函數(shù)的定義:是一段具備特定功能的程序段.
作用:1.提高了代碼的復(fù)用性,減少代碼量.
2.當(dāng)需求變更,不需要去改很多代碼.
目的:把一個功能封裝起來,方便以后調(diào)用.
函數(shù)名后面()里的每一個變量我們稱之為形式參數(shù),簡稱形參
調(diào)用函數(shù)時傳入的參數(shù),我們稱之為實際參數(shù),簡稱實參,他可以是常量,變量或者其他結(jié)構(gòu)數(shù)據(jù)類型及表達式.函數(shù)也是可以作為實參傳遞的,此時傳遞的是函數(shù)的返回值,所以,能做實參的函數(shù)必須是有返回值的.
函數(shù)有:
1.有參數(shù)有返回值
2.有參數(shù)沒有返回值
3.沒有參數(shù)有返回值
3.沒有參數(shù)沒有返回值
規(guī)定:沒有返回值的函數(shù)統(tǒng)一用void來定義.
注意:C語言中函數(shù)可以不寫返回值類型,系統(tǒng)會默認(rèn)返回值類型是int類型
函數(shù)的定義格式:
返回值類型函數(shù)名稱(形參列表1,形參列表2....)//形參是函數(shù)被調(diào)用的時候才會分配存儲空間
{
函數(shù)體; //語句; ...
}
例如:int getMax(int a, int b)
{
int max = a > b ? a :b;
return max;
}
---------------------------
函數(shù)要使用,必須要在main函數(shù)之前有聲明,如果函數(shù)定義在main函數(shù)之前,就沒有聲明的必要了,函數(shù)要調(diào)用才會被執(zhí)行
函數(shù)聲明:函數(shù)名(形參1,形參2…); ,如int getMax(int,int);形參的變量名省略不寫.
函數(shù)調(diào)用格式總結(jié)為:函數(shù)名(實際參數(shù)); ,如:int getMax(實參1,實參2…);多個實參用逗號隔開.若這個函數(shù)是有返回值的,要定義一個變量來接收返回值.
定義函數(shù)有4個確定
1.確定函數(shù)名稱(有意義的)
2.確定形參類型
3.確定返回值(這個函數(shù)是否有返回值,沒有的話就不用)
4.確定返回值類型(函數(shù)名字前面那個數(shù)據(jù)類型)
-----------------------------------------
函數(shù)中的return有2個作用
(有返回值的函數(shù)一定要有return,void函數(shù)可以有也可以沒有,一般都不寫,要寫就寫return;這樣寫了也不會報錯)
1.返回值給調(diào)用者
2.正常結(jié)束函數(shù)
3.提前結(jié)束函數(shù)
--------------------------------------
函數(shù)的注意點:
1.形參的個數(shù)和實參的個數(shù)必須一致
2.如果形參是基本數(shù)據(jù)類型(int float double char),是值傳遞,
修改函數(shù)內(nèi)形參的值,一般不會影響函數(shù)外面的實參(有例外的情況),
但是會影響有返回值的結(jié)果.
3.返回值跟返回值類型不一致的時候,系統(tǒng)會進行隱式轉(zhuǎn)換.
4.函數(shù)不能嵌套,能互相調(diào)用.
5.函數(shù)名稱不能相同,不要以為形參類型不同就可以了,一樣不行的.
6.如果一個函數(shù)的返回值類型是int類型的,可以沒有聲明,也不會報錯.