本文發(fā)布于微信公眾號:三玹
在前面的文章中,我們其實有見過函數(shù),就是C語言程序有且僅有一個的主函數(shù) main()。因此,可以說C語言程序中至少都會有一個函數(shù)。
那么,接下來就來學(xué)習(xí)一下C語言中函數(shù)的知識點。函數(shù),也被稱為方法,是一組一起執(zhí)行一個任務(wù)的語句。做菜是需要洗菜、切菜、炒菜、然后把菜盛出來端上桌。如果沒有函數(shù),代碼上我們每次就都要把這些步驟一個一個地寫清楚,做一道菜寫一堆這樣的步驟。
但是有了函數(shù)就不一樣了。我把這些步驟都整合在一起,把它變成一個函數(shù),等我需要做菜的時候,就只需要把這個函數(shù)拿出來用。誒,這就比每次都要寫一大堆東西輕松得多,就非常方便!type function(parameter list)
{
// body
}
1、type:函數(shù)返回的類型,如 int、float、char等等,這類有明確返回類型的函數(shù),結(jié)果都必須有 return 關(guān)鍵字返回相應(yīng)類型的數(shù)據(jù)。如果函數(shù)不返回類型,則可以使用 void 空類型來定義函數(shù)。
2、function:函數(shù)的名稱。名稱必須符合標識符的規(guī)則,同時建議函數(shù)名稱可以按照駝峰式寫法(大駝峰:YouHaveMoney 或者小駝峰:tomorrowIsBetter)。
3、parameter:函數(shù)的參數(shù)列表,可以有,可以沒有,實際情況根據(jù)函數(shù)的主體內(nèi)容進行決定。相當于一個占位符。4、body:函數(shù)的主體部分。即把所有做菜的步驟都包括在這里面,當調(diào)用函數(shù)的時候,就會順序執(zhí)行這里面的內(nèi)容。
函數(shù)編寫之后,想進行實際應(yīng)用,那就需要調(diào)用。如果不調(diào)用,函數(shù)寫了跟沒寫一樣。他就在那里,你不呼喚他,他是沒有回應(yīng)的。
C語言中的函數(shù)是通過函數(shù)名();來進行調(diào)用的。#include<stdio.h>
int main(){
HelloWorld();
return 0;
}
void HelloWorld(){
printf("Hello World\n");
}
那么有人就要說,程序是按順序執(zhí)行的,那我直接把 HelloWorld 這個函數(shù)直接寫在主函數(shù)里面,那么它運行的時候不也是按順序執(zhí)行,是不是就不用調(diào)用了。在C語言當中,循環(huán)是可以嵌套的、判斷也是可以嵌套的,但是函數(shù)是不能嵌套定義的。函數(shù)的定義只能在函數(shù)體之外進行定義,無法在函數(shù)體內(nèi)定義新的函數(shù)。不過可以嵌套使用,在一個函數(shù)里面調(diào)用另外一個函數(shù),就可以實現(xiàn)函數(shù)的嵌套使用。#include<stdio.h>
int main(){
func2();
return 0;
}
void func1(){
printf("讀者都是英俊瀟灑!美若天仙!\n");
}
void func2(){
func1();
printf("求個點贊、收藏和分享,可好?");
}
函數(shù)的調(diào)用還有一種方式,叫做遞歸調(diào)用,俗一點講就是我自己用自己。這一個遞歸稍微講起來有點復(fù)雜,就暫且不在這里作詳細展開,后面涉及到遞歸的時候再說說。前文提到,參數(shù)的在函數(shù)中相當于是一個占位符的作用。就比如數(shù)學(xué)中的函數(shù),x + y = 10。x 和 y 就是函數(shù)中的參數(shù),它實際是什么值我不知道,但我知道它們兩個相加是等于10。那么 x 和 y 的實際值可以有無限種可能,x 和 y 在這里就是占個位置,表示一個虛的數(shù)值。就例如,我們要計算兩個值相加的值,但是不知道用戶實際應(yīng)用要輸入什么值。那這里就可以使用參數(shù)來占個位置。int add(int a, int b){
return a+b;
}
在程序中,參數(shù)是有兩種分類的:形式參數(shù)和實際參數(shù)。
形式參數(shù),顧名思義,就是形式上的,做個樣子,沒有實際X用。
一般,函數(shù)定義時候的參數(shù),就叫做形式參數(shù)。它們沒有實際的值,只是擺個樣子,在這里占個位置。實際參數(shù),則是相反的,它是實在的,有內(nèi)容的。一般是在函數(shù)調(diào)用的時候,傳遞給函數(shù)的值就叫做實際參數(shù)。#include<stdio.h>
int main(){
int x = 5;
int y = 9;
int z = add(x, y);
printf("%d", z);
return 0;
}
int add(int a, int b){
return a+b;
}
在這里面,add 函數(shù)定義時,變量 a 和 b 就是形式參數(shù)。
在主函數(shù)中調(diào)用 add 函數(shù)時,傳入的變量 x 和 y 就是實際參數(shù)。