作者 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)。
轉(zhuǎn)載請(qǐng)注明出處。
原文:http://www.itdecent.cn/p/148564646b7f
內(nèi)容簡(jiǎn)介
- 前言
- 函數(shù)的創(chuàng)建和調(diào)用
- 一些函數(shù)的實(shí)例
- 總結(jié)
- 第一部分練習(xí)題預(yù)告
1. 前言
上一課是 C語(yǔ)言探索之旅 | 第一部分第十課:第一個(gè)C語(yǔ)言小游戲 。
這一課我們將會(huì)用函數(shù)這個(gè)重中之重來(lái)結(jié)束《C語(yǔ)言探索之旅》的第一部分(基礎(chǔ)部分),而第二部分將要迎接我們的就是 C語(yǔ)言的高級(jí)技術(shù)了。
第二部分會(huì)比較難,不過(guò)不用擔(dān)心,我們會(huì)循序漸進(jìn),一點(diǎn)點(diǎn)地學(xué)習(xí)。只要方向?qū)?,肯花時(shí)間,C語(yǔ)言一點(diǎn)也不可怕。
這一課里我們也會(huì)給大家講 C語(yǔ)言程序所基于的原則。
我們將要學(xué)習(xí)如何將程序分塊管理,有點(diǎn)像樂(lè)高積木。
其實(shí)所有 C語(yǔ)言的大型程序都是小程序塊的集合,而這些小程序塊我們稱(chēng)之為函數(shù)。函數(shù)的英語(yǔ)是 function,function 表示“功能;[數(shù)]函數(shù)”。
在面向?qū)ο蟮恼Z(yǔ)言(如 Java,C++)里面,函數(shù)又被稱(chēng)為方法(method)。當(dāng)然這里我們只討論 C語(yǔ)言(面向過(guò)程的語(yǔ)言),不討論面向?qū)ο蟮恼Z(yǔ)言。
2. 函數(shù)的創(chuàng)建和調(diào)用
在之前的課程中我們已經(jīng)學(xué)過(guò):所有的 C語(yǔ)言程序都是由 main 函數(shù)開(kāi)始運(yùn)行的。那時(shí)候我們也展示了一個(gè)概要圖,里面有一些術(shù)語(yǔ):

最上面的部分我們稱(chēng)之為“預(yù)處理指令”,很容易辨識(shí),因?yàn)橐?# 號(hào)開(kāi)頭,而且通??偸欠旁诔绦虻淖钋懊?。
下面的部分就是我們要學(xué)習(xí)的函數(shù)了,這里的示例是 main 函數(shù)。
前面說(shuō)過(guò),C語(yǔ)言的程度都是以 main 函數(shù)為入口函數(shù)的。一個(gè) C程序要運(yùn)行,必須要有 main 函數(shù)。只不過(guò),目前為止我們寫(xiě)的所有程序,包括上一課的小游戲,也只是在 main 函數(shù)里面搗鼓而已,我們還沒(méi)跳出過(guò) main 函數(shù)過(guò)。
那你也許會(huì)問(wèn):“這樣不好嗎?”
答案是:并不是說(shuō)這樣不好,但這并不是 C語(yǔ)言的程序員通常所做的。幾乎沒(méi)有程序員會(huì)只在 main 函數(shù)的大括號(hào)內(nèi)部寫(xiě)代碼。
到目前為止我們所寫(xiě)的程序都還比較短小,但是想象一下如果程序變得很大,代碼幾千幾萬(wàn)甚至上百萬(wàn)行,難道我們還把這些代碼都塞在 main 函數(shù)里面嗎?
所以我們現(xiàn)在來(lái)學(xué)習(xí)如何更好地規(guī)劃我們的程序。我們要學(xué)習(xí)將程序分成很多小塊,就像樂(lè)高積木的每一個(gè)小塊一樣,這些小塊搭起來(lái)卻可以組成很多好玩的形狀。
這些程序小塊我們稱(chēng)之為函數(shù)(function)。
一個(gè)函數(shù)會(huì)執(zhí)行某些操作,并返回一個(gè)值。程序就是一個(gè)代碼序列,負(fù)責(zé)完成特定的任務(wù)。
一個(gè)函數(shù)有輸入和輸出,如下圖所示:

我們可以把函數(shù)想象成一臺(tái)制作香腸的機(jī)器,在輸入那一頭你把豬裝進(jìn)去,輸出那一頭就出來(lái)香腸了。這酸爽,不言而喻~

當(dāng)我們?cè)诔绦蛑姓{(diào)用一個(gè)函數(shù)的時(shí)候,會(huì)依次發(fā)生三個(gè)步驟:
- 輸入:給函數(shù)傳入一些信息(通過(guò)給函數(shù)一些參數(shù))。
- 運(yùn)算:使用輸入里傳進(jìn)去的信息,函數(shù)就可以完成特定任務(wù)了。
- 輸出:做完運(yùn)算后,函數(shù)會(huì)返回一個(gè)結(jié)果,被稱(chēng)為輸出或者返回值。
舉個(gè)例子,比如我們有個(gè)函數(shù)叫做 multipleTwo,作用是將輸入乘以二,如下所示:

函數(shù)的目的是為了讓源代碼更加結(jié)構(gòu)分明,也節(jié)省源代碼數(shù)目,因?yàn)槲覀兙筒挥妹看味驾斎胫貜?fù)的代碼片段而只需要調(diào)用函數(shù)就好了。
再設(shè)想一下:
之后我們可能會(huì)想要?jiǎng)?chuàng)建一個(gè)叫 showWindow(“顯示窗口”)的函數(shù),作用是在屏幕上顯示一個(gè)窗口。
一旦函數(shù)寫(xiě)好之后(當(dāng)然寫(xiě)的過(guò)程是最難的),我們就只需要說(shuō):“那個(gè)誰(shuí),給我去打開(kāi)一個(gè)窗口”,showWindow 函數(shù)就會(huì)為我們?cè)谄聊簧巷@示一個(gè)窗口。
我們也可以寫(xiě)一個(gè) displayCharacter(“顯示角色”) 的函數(shù),作用是為我們?cè)谄聊簧巷@示一個(gè)游戲角色。
函數(shù)的構(gòu)成
我們?cè)谥暗恼n中已經(jīng)接觸過(guò)函數(shù)了,就是非常重要的 main 函數(shù)。不過(guò)我們還是需要介紹一下一個(gè)函數(shù)的構(gòu)成到底是怎么樣的。
下面是函數(shù)的語(yǔ)義學(xué)的結(jié)構(gòu),這是一個(gè)需要了解的模板:
類(lèi)型 函數(shù)名(參數(shù))
{
// 函數(shù)體,在這里插入指令
}
關(guān)于這個(gè)模板我們需要掌握四點(diǎn):
函數(shù)類(lèi)型:對(duì)應(yīng)輸出類(lèi)型,也可以把其看做函數(shù)的類(lèi)型。和變量類(lèi)似,函數(shù)也有類(lèi)型,這類(lèi)型取決于函數(shù)返回值的類(lèi)型。如果一個(gè)函數(shù)返回一個(gè)浮點(diǎn)數(shù)(帶小數(shù)點(diǎn)的),那么自然我們會(huì)將函數(shù)類(lèi)型定為 float 或者 double;如果返回整數(shù),那么我們一般會(huì)將類(lèi)型定為 int 或 long。但是我們也可以創(chuàng)建不返回任何值的函數(shù)。
函數(shù)名:這是你的函數(shù)的名字。你可以給你的函數(shù)起任意名字,只要遵從給變量命名的相同的規(guī)則就好。
函數(shù)的參數(shù)(對(duì)應(yīng)輸入):參數(shù)位于函數(shù)名之后的圓括號(hào)內(nèi)。這些參數(shù)是函數(shù)要用來(lái)做操作(運(yùn)算)的數(shù)據(jù)。你可以給函數(shù)傳入任意數(shù)量的參數(shù),也可以不傳入任何參數(shù)。
函數(shù)體:大括號(hào)規(guī)定了函數(shù)的起始和結(jié)束范圍。在大括號(hào)中你可以寫(xiě)入任意多的指令。對(duì)于上面的 multipleTwo 函數(shù),需要寫(xiě)入將輸入的數(shù)字乘以 2 的相關(guān)操作指令。
根據(jù)函數(shù)類(lèi)型,函數(shù)可以分為兩類(lèi):
返回一個(gè)值的函數(shù)。這樣的函數(shù),我們將其類(lèi)型定為對(duì)應(yīng)的值的類(lèi)型(char,int,long,double,等)。
不返回任何值的函數(shù)。這樣的函數(shù),我們將其類(lèi)型定為 void(void
表示“空的,無(wú)效的”)。
創(chuàng)建函數(shù)
還是用一個(gè)實(shí)例來(lái)說(shuō)明吧,用的還是我們上面提過(guò)的 multipleTwo 這個(gè)函數(shù):
這個(gè)函數(shù)的輸入是一個(gè)整型 int,輸出也是 int 類(lèi)型的數(shù)。
int multipleTwo(int number)
{
int result = 0;
result = 2 * number; // 我們將提供的數(shù)乘以 2
return result; // 我們將 2 倍的數(shù)返回
}
這就是你的第一個(gè)除了 main 以外的函數(shù),自豪不?
return result; 這句話(huà)一般放在函數(shù)體的最后,用于返回一個(gè)值。這句話(huà)意味著:“函數(shù)你給我停下,然后返回這個(gè)值”。這里的 result 必須是 int 類(lèi)型的,因?yàn)楹瘮?shù)類(lèi)型是 int,所以返回值也必須是 int 類(lèi)型。
result 這個(gè)變量是在 multipleTwo 函數(shù)中聲明/創(chuàng)建的,所以它只能在這個(gè)函數(shù)里面用,不能在另一個(gè)函數(shù)(比如 main)中使用,所以是 multipleTwo 函數(shù)的私有變量。
但上面的代碼是不是最簡(jiǎn)單的呢?
不是,還可以簡(jiǎn)化,如下:
int multipleTwo(int number)
{
return 2 * number;
}
上面的代碼做的是一樣的事情,寫(xiě)起來(lái)也更簡(jiǎn)單,函數(shù)體內(nèi)只有一句話(huà)。
通常來(lái)說(shuō),我們寫(xiě)的函數(shù)都會(huì)有多個(gè)變量,以便做運(yùn)算,multipleTwo這個(gè)函數(shù)算是相當(dāng)簡(jiǎn)單的了。
多個(gè)參數(shù),或沒(méi)有參數(shù)
多個(gè)參數(shù)
我們的 multipleTwo 函數(shù)只有一個(gè)參數(shù),但是我們也可以創(chuàng)建有幾個(gè)參數(shù)的函數(shù),比如下面這個(gè)加法函數(shù) addition:
int addition(int a, int b)
{
return a + b;
}
可以看到,只需要用一個(gè)逗號(hào)來(lái)分隔參數(shù)就好了。
沒(méi)有參數(shù)
有些函數(shù)可能會(huì)沒(méi)有參數(shù)。例如一個(gè)用來(lái)顯示 Hello(“你好”)的函數(shù):
void hello()
{
printf("Hello");
}
如上所示,這個(gè)函數(shù)沒(méi)有任何參數(shù)。此外,可以看到我們還把函數(shù)類(lèi)型定為了 void,所以也沒(méi)有 return 語(yǔ)句用于返回一個(gè)值,所以這個(gè)函數(shù)也沒(méi)有返回值。
調(diào)用函數(shù)
現(xiàn)在我們來(lái)看一個(gè)程序,復(fù)習(xí)一下我們之前學(xué)的內(nèi)容。
我們要用到我們的 multipleTwo 函數(shù),來(lái)計(jì)算一個(gè)數(shù)的兩倍的值。
我們暫時(shí)把 multipleTwo 函數(shù)寫(xiě)在 main 函數(shù)之前,如果放在 main 函數(shù)之后會(huì)出錯(cuò),以后的課程我們會(huì)解釋為什么。
#include <stdio.h>
int multipleTwo(int number)
{
return 2 * number;
}
int main(int argc, char *argv[])
{
int initial = 0, twice = 0;
printf("請(qǐng)輸入一個(gè)整數(shù)... ");
scanf("%d", &initial);
twice = multipleTwo(initial);
printf("這個(gè)數(shù)的兩倍是 %d\n", twice);
return 0;
}
我們的程序是從 main 函數(shù)開(kāi)始運(yùn)行的,這個(gè)大家已經(jīng)知道了。
我們首先請(qǐng)求用戶(hù)輸入一個(gè)整數(shù),將其值傳遞給 multipleTwo 函數(shù),并且把 multipleTwo 函數(shù)的返回值賦給 twice這個(gè)變量。
仔細(xì)看下面這一行,這是我們最關(guān)心的一行代碼,因?yàn)檎沁@一行調(diào)用了我們的 multipleTwo 函數(shù)。
twice = multipleTwo(initial);
在括號(hào)里,我們將變量 initial 作為輸入傳遞給函數(shù)。也正是 initial 這個(gè)變量,函數(shù)將要用于其內(nèi)部的處理。
這個(gè)函數(shù)返回一個(gè)值,這個(gè)值我們賦給 twice 這個(gè)變量。
其實(shí)這一行中,我們就是“命令”電腦:“讓 multipleTwo 函數(shù)給我計(jì)算 initial 的兩倍的值,并且將結(jié)果儲(chǔ)存到 twice 這個(gè)變量中”。
詳細(xì)的分步解釋
也許對(duì)于初學(xué)者,理解起來(lái)還是有些許困難。
不用擔(dān)心,我相信通過(guò)下面的分步解釋?zhuān)蠹視?huì)明白得更透徹。
這個(gè)特殊注釋的代碼向大家展示了程序的運(yùn)行順序:
#include <stdio.h>
int multipleTwo(int number) // 6
{
return 2 * number; // 7
}
int main(int argc, char *argv[]) // 1
{
int initial = 0, twice = 0; // 2
printf("請(qǐng)輸入一個(gè)整數(shù)... "); // 3
scanf("%d", &initial); // 4
twice = multipleTwo(initial); // 5
printf("這個(gè)數(shù)的兩倍是 %d\n", twice); // 8
return 0; // 9
}
上面的編號(hào)表示執(zhí)行的順序:
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
程序從 main 函數(shù)開(kāi)始執(zhí)行;
在 main 函數(shù)中的命令一行一行地被執(zhí)行;
執(zhí)行 printf 輸出;
執(zhí)行 scanf 讀入數(shù)據(jù),賦值給變量 initial;
讀入指令,調(diào)用 multipleTwo 函數(shù)了,因此程序跳到上面的 multipleTwo 函數(shù)中去執(zhí)行;
運(yùn)行 multipleTwo 函數(shù),并接受一個(gè)數(shù)作為輸入(number);
對(duì) number 做運(yùn)算,并且結(jié)束 multipleTwo 函數(shù)。return 意味著函數(shù)的結(jié)束,并且返回一個(gè)值;
重新回到 main 函數(shù)的下一條指令,用 printf 輸出;
又一個(gè) return,這次是 main 函數(shù)的結(jié)束,于是整個(gè)程序運(yùn)行完畢。
變量 initial 被傳值給 multipleTwo 的參數(shù) number(另一個(gè)變量),稱(chēng)為值傳遞。
當(dāng)然其實(shí)原理是做了一份變量 initial 的拷貝,把拷貝賦值給了 number,這個(gè)值傳遞的概念以后學(xué)習(xí)指針那一章時(shí)會(huì)再詳述。
這里如果我們把 initial 改名為 number 也是可以的,并不會(huì)與函數(shù) multipleTwo 的參數(shù) number 沖突。因?yàn)閰?shù) number 是屬于 multipleTwo 這個(gè)函數(shù)的專(zhuān)屬變量。
測(cè)試程序
下面是程序運(yùn)行起來(lái)的一個(gè)實(shí)例:
請(qǐng)輸入一個(gè)整數(shù)... 10
這個(gè)數(shù)的兩倍是 20
當(dāng)然你不必將 multipleTwo 函數(shù)的返回值賦給一個(gè)變量,也可以直接將 multipleTwo 函數(shù)的返回值傳遞給另一個(gè)函數(shù),就好像 multipleTwo(intial) 是一個(gè)變量。
仔細(xì)看下面這個(gè)程序,跟上面幾乎是一樣的,但是修改了最后一個(gè) printf 的行為,我們也沒(méi)有使用 twice 這個(gè)變量,因?yàn)椴槐匾?/p>
#include <stdio.h>
int multipleTwo(int number)
{
return 2 * number;
}
int main(int argc, char *argv[])
{
int initial = 0, twice = 0;
printf("請(qǐng)輸入一個(gè)整數(shù)... ");
scanf("%d", &initial);
// 函數(shù)的結(jié)果(返回值)直接傳遞給printf函數(shù),而沒(méi)有通過(guò)第三方變量
printf("這個(gè)數(shù)的兩倍是 %d\n", multipleTwo(initial));
return 0;
}
我們可以看到,這次的程序直接將 multipleTwo 函數(shù)的返回值傳遞給了 printf 函數(shù)。
當(dāng)程序運(yùn)行到這一行會(huì)發(fā)生什么呢?
很簡(jiǎn)單,電腦看到這一行是 printf 函數(shù),所以調(diào)用標(biāo)準(zhǔn)輸入輸出庫(kù)的 printf 函數(shù),向 printf 函數(shù)傳遞我們給的所有參數(shù)。
第一個(gè)參數(shù)是要顯示的語(yǔ)句,第二個(gè)參數(shù)是一個(gè)整數(shù)。
電腦又知道要把這個(gè)整數(shù)值傳遞給 printf 函數(shù),必須先調(diào)用 multipleTwo 函數(shù),所以它就乖乖地去調(diào)用 multipleTwo 函數(shù),做兩倍乘法運(yùn)算,并且直接把結(jié)果傳遞給 printf 函數(shù)。
這就是函數(shù)的層疊式調(diào)用,這樣做的好處是,一個(gè)函數(shù)可以按需調(diào)用另一個(gè)函數(shù)。
只要愿意,我們的 multipleTwo 函數(shù)也可以再調(diào)用其他的函數(shù),只要你肯寫(xiě)。然后這個(gè)函數(shù)也可以再調(diào)用其它函數(shù),依次類(lèi)推。
這就是 C語(yǔ)言程序所基于的原則。所有的代碼都是有規(guī)劃地組合在一起的,類(lèi)似樂(lè)高積木。
最后,最艱難的當(dāng)然是編寫(xiě)函數(shù)了。一旦完成,你就只需要調(diào)用它就好了,不需要太擔(dān)心函數(shù)內(nèi)部所做的運(yùn)算。
使用函數(shù)可以大大降低代碼的重復(fù)度。相信我,你會(huì)非常需要函數(shù)的。
3. 一些函數(shù)的實(shí)例
如果一起學(xué)習(xí)過(guò)之前的課程,你應(yīng)該會(huì)有這種印象:我就是個(gè)“例子狂人”。
是的,因?yàn)槲液芟矚g用實(shí)例來(lái)加深理解。
因?yàn)槲矣X(jué)得理論雖好,但如果只有理論,那我們就不能很好地掌握知識(shí),而且不知道怎么應(yīng)用,那就很可惜了。想起了“勁酒雖好,可不要貪杯哦”那句廣告詞…
所以下面我們會(huì)一起看幾個(gè)函數(shù)的實(shí)例,以便讀者對(duì)函數(shù)有更深入的了解。我們盡量展示不同情況,使大家看到可能出現(xiàn)的各種函數(shù)類(lèi)型。
歐元/人民幣轉(zhuǎn)換
我們來(lái)寫(xiě)一個(gè)函數(shù),用于轉(zhuǎn)換歐元到人民幣。
查了一下最新的匯率:1 歐元 = 7.8553 人民幣元。
#include <stdio.h>
double conversion(double euros)
{
double rmb = 0;
rmb = 7.8553 * euros;
return rmb;
}
int main(int argc, char *argv[])
{
printf("10 歐元 = %f 人民幣\n", conversion(10));
printf("50 歐元 = %f 人民幣\n", conversion(50));
printf("100 歐元 = %f 人民幣\n", conversion(100));
printf("200 歐元 = %f 人民幣\n", conversion(200));
return 0;
}
你也可以寫(xiě)一個(gè)人民幣轉(zhuǎn)換為歐元的小程序。
懲罰
接下來(lái)看一個(gè)函數(shù),這個(gè)函數(shù)不會(huì)返回任何值,所以類(lèi)型是 void。這個(gè)函數(shù)會(huì)根據(jù)傳入的參數(shù)在屏幕上顯示一定次數(shù)的信息。
這個(gè)函數(shù)只有一個(gè)參數(shù),那就是顯示懲罰語(yǔ)句的次數(shù):
#include <stdio.h>
void punish(int lineNumber)
{
int i;
for (i = 0 ; i < lineNumber ; i++)
{
printf("我不應(yīng)該有錢(qián)任性\n");
}
}
int main(int argc, char *argv[])
{
punish(5);
return 0;
}
顯示結(jié)果如下:
我不應(yīng)該有錢(qián)任性
我不應(yīng)該有錢(qián)任性
我不應(yīng)該有錢(qián)任性
我不應(yīng)該有錢(qián)任性
我不應(yīng)該有錢(qián)任性
矩形面積
矩形的面積很容易計(jì)算:長(zhǎng) x 寬。
我們來(lái)寫(xiě)一個(gè)求矩形面積的函數(shù),它有兩個(gè)參數(shù):矩形的長(zhǎng)和矩形的寬。返回值是矩形的面積:
#include <stdio.h>
double rectangleArea(double length, double width)
{
return length * width;
}
int main(int argc, char *argv[])
{
printf("長(zhǎng)是 10,寬是 5 的矩形面積是 %f\n", rectangleArea(10, 5));
printf("長(zhǎng)是 3.5,寬是 2.5 的矩形面積是 %f\n", rectangleArea(3.5, 2.5));
printf("長(zhǎng)是 9.7,寬是 4.2 的矩形面積是 %f\n", rectangleArea(9.7, 4.2));
return 0;
}
顯示結(jié)果:
長(zhǎng)是 10,寬是 5 的矩形面積是 50.000000
長(zhǎng)是 3.5,寬是 2.5 的矩形面積是 8.750000
長(zhǎng)是 9.7,寬是 4.2 的矩形面積是 40.740000
我們可以直接在函數(shù)里顯示 長(zhǎng),寬和計(jì)算所得的面積嗎?
當(dāng)然可以。這樣的情況下,函數(shù)就不必返回任何值了,函數(shù)計(jì)算出矩形面積,然后直接顯示在屏幕上:
#include <stdio.h>
void rectangleArea(double length, double width)
{
double area = 0;
area = length * width;
printf("長(zhǎng)為 %f 寬為 %f 的矩形的面積是 %f\n", length, width, area);
}
int main(int argc, char *argv[])
{
rectangleArea(10, 5);
rectangleArea(3.5, 2.5);
rectangleArea(9.7, 4.2);
return 0;
}
我們可以看到,printf 函數(shù)在函數(shù)體內(nèi)被調(diào)用,顯示的結(jié)果和之前把 printf 放在 main 函數(shù)里是一樣的。只不過(guò)我們用的方法不一樣罷了。
菜單
還記得之前的課程中菜單的那個(gè)例子嗎?(“皇上,您還記得大明湖畔的夏雨荷么?”)
這次我們用自定義的函數(shù)來(lái)重寫(xiě)一次,會(huì)更詳細(xì)和優(yōu)化:
#include <stdio.h>
int menu()
{
int choice = 0;
while (choice < 1 || choice > 4)
{
printf("菜單 :\n");
printf("1 : 北京烤鴨\n");
printf("2 : 麻婆豆腐\n");
printf("3 : 魚(yú)香肉絲\n");
printf("4 : 剁椒魚(yú)頭\n");
printf("您的選擇是 ? ");
scanf("%d", &choice);
}
return choice;
}
int main(int argc, char *argv[])
{
switch (menu())
{
case 1:
printf("您點(diǎn)了北京烤鴨\n");
break;
case 2:
printf("您點(diǎn)了麻婆豆腐\n");
break;
case 3:
printf("您點(diǎn)了魚(yú)香肉絲\n");
break;
case 4:
printf("您點(diǎn)了剁椒魚(yú)頭\n");
break;
}
return 0;
}
這個(gè)程序還可以改進(jìn):
你可以在用戶(hù)輸入一個(gè)錯(cuò)誤的數(shù)字時(shí)顯示一個(gè)錯(cuò)誤信息,而不是直接繼續(xù)讓其點(diǎn)單。
4. 總結(jié)
函數(shù)之間可以互相調(diào)用,因此 main 函數(shù)可以調(diào)用 C語(yǔ)言系統(tǒng)定義好的函數(shù),例如 scanf 和 printf 等,也可以調(diào)用我們自己定義的函數(shù)。
一個(gè)函數(shù)接受一些變量作為輸入,我們將其稱(chēng)為函數(shù)的參數(shù)(也有空(void)參數(shù)的函數(shù))。
函數(shù)會(huì)用這些參數(shù)來(lái)做一系列的操作,之后會(huì)用 return 返回一個(gè)值(也有無(wú)返回值的函數(shù))。
5. 第一部分練習(xí)題預(yù)告
今天的課就到這里,一起加油吧!
下一課我們來(lái)做一些幫助鞏固知識(shí)點(diǎn)的練習(xí)題吧!
我是 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)運(yùn)營(yíng)者,慕課網(wǎng)精英講師 Oscar 老師,終生學(xué)習(xí)者。
熱愛(ài)生活,喜歡游泳,略懂烹飪。
人生格言:「向著標(biāo)桿直跑」