C語言函數
一、函數
C語言程序是由函數構成的,每個函數負責完成一部分的功能,函數將工恩呢該封裝起來,以供程序調用。
二、函數定義
目的:將一些常用的功能封裝起來,以供日后調用。
步驟:確定函數名,確定函數體,調用
格式:返回值類型 函數名(形式參數列表)
{ 函數體 }
三、函數調用
定義函數需要明確定的東西:
①. 取一個有意義的函數名
②. 確定函數的形參
③. 編寫函數體
④. 返回值
示例:
Int average(int num1,int num2)
{
Return (num1+num2)/2;
}
int main()
{
Int a=1;
Int b=3;
Int c=average(a,b); //調用函數
Return 0;
}
四、參數
①. 形參:定義函數時,函數名后面的參數 如num1和num2
②. 實參:調用函數時,傳人的具體數據 如a和b
③. 形參和實參的個數必須相等
④. 函數體內部不能定義和形參同名的變量
⑤. 如果是基本的數據類型作為形參,則是純粹的值傳遞,修改函數內部形參的值並不會影響到實參的值
⑥. 一個函數可以沒有形參,也可以有無限個形參
五、函數的返回值
(一)Return 的作用:
①. 退出函數
②. 返回一個具體的值給函數的調用者
(二)返回值使用注意:
①. C語言是弱語法弱類型的語言,非常不嚴格
②. 如果沒有寫清楚返回值的類型,則默認為int型的
③. Void代表沒有返回值
④. 就算明確聲明了返回值類型,也可以不返回任何的值
⑤. C語言默認情況下,不允許有兩個同名的函數
六、函數使用注意
①. 默認不允許函數重名
②. 函數之間是平等的,不能夠嵌套定義
③. 函數不可以重復定義,但是可以重復聲明,只要是在調用前聲明就可以,地方隨便
④. 函數如果是只要聲明沒有定義,那么編譯可以成功,但鏈接時會失效
七、多人協作
#include<.stdio.h>是一個系統頭文件。
#include<abc.txt>相當於把abc.txt文件中的所用內容以純文本的方式拷貝到當前位置。
“”表示文件與.c文件處於同一路徑,可以使用相對路徑也可以使用絕對路徑。左邊有/的是絕對路徑,沒有/則為相對路徑。
注意:自定義的文件使用“”,系統文件使用<>。
函數如果在調用時,函數定義在調用之后,且前面沒有進行相應的聲明,則編譯器報錯;
調用函數,沒有函數聲明,編譯器不會報錯,鏈接時報錯,不定義函數反而不報錯。
鏈接:把項目中所以相關的.o目標文件和c語言的函數庫合並在一起,生成可執行文件。
通常:
①. 函數的定義放在.c文件中,函數的聲明放在.h文件中
②. 如果要是有某個.c文件中定義的函數,只需要包含.c文件對應的.h文件即可
③. .h文件生下來就是打醬油被別人拿來拷貝包含的,編譯鏈接時不用寫出
八、補充
(1)main函數的返回值是返回給操作系統的,0為正常退出,其他值為非正常退出。用以進行系統日志,其實它返回任何值對程序本身沒有影響,僅僅只是標記
(2)Printf函數的返回值為字符數。如printf(“abc”);則返回值為3,若printf(“abc男\n”);的返回值為7,因為一個中文占3個字符。