【C++ 筆記】函數(Function)(上) - part 7
【C++ 筆記】函數(Function)(上) - part 7
很感謝你點進來這篇文章。
你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧!
函數(Function)
“A function is a block of code which only runs when it is called.”。
:::success
「函數只能被呼叫來執行一個程式碼區塊。」
:::
什麼意思呢?就好比函數是一台機器,這台機器是具有輸入、輸出的概念的,假設一台機器是具有功用性的,比如說自動販賣機,功能就是給錢吐飲料。所謂的函數其實就是一台具有功能的機器。
可以輸入參數給函數,也可以設定輸出給函數。
參數可以按照剛才的例子,想成是錢,輸出則是吐飲料。
接下來進入到 C++ 的函數世界,語法如下:
1 | return_type function_name( parameter list ) |
return_type:關於函數的回傳值,所需設定的資料型態。若不需要回傳,可填 void。(為了簡單理解,可理解 return 就是函數的輸出、回傳值)
function_name:需要注意命名的規則,同變數命名規則。
parameter list:可設定單一參數、多重參數等,可以說是”輸入值的變數”,與變數相同,需要設定資料型態在前面,後面再輸入變數名字,通常使用不會將參數設定預設值,要設定也是可以。
body of the function:一個函數被呼叫後,所要執行的程式碼。
:::success
Q:要如何呼叫函數?
A:假設函數為
int func(){
return 0;
}
呼叫時寫:func() 就可以囉。
:::
函數宣告&定義
1 | int func(int a); |
以上這是函數單純的宣告,尚未進行定義。
如果我們要進行下一步的定義,如下:
1 |
|
差別:
- 宣告結尾要加分號,而且只有一行。
- 定義時加上兩個中括號,裡面就開始寫內容了。
最直接的做法其實就是省略宣告的步驟,直接定義就能做到宣告的動作了。
:::success
那我直接定義就好,幹嘛還要宣告這麼麻煩?
:::
:::spoiler 點我看答案(自己先想一想)
因為如果是大型專案,你直接定義函數會容易發生「未定義函數」的錯誤,而且這樣做也能增加程式碼的結構清晰度,達到模組化設計的目的。
這無論是在軟體工程還是任何領域當中,都是相當重要的細節。
:::
以下是一個範例:
1 |
|
參數預設值
我們可以為函數當中的參數設定預設值,如果我們沒有輸入值進去的話,則預設使用這個數字。
以下是個範例:
1 |
|
來源:https://www.runoob.com/cplusplus/cpp-functions.html
輸出結果:
1 | Total value is :300 |
總結
函數的定義與概念
函數是一段在被呼叫時執行的程式碼區塊,可以理解為一台具有輸入和輸出的機器。函數的基本結構包括回傳值類型、函數名稱和參數列表,語法如下:
1 | return_type function_name(parameter list) { |
- return_type:函數的回傳值類型,若不需要回傳則使用 void。
- function_name:函數的名稱,需遵循命名規則。
- parameter list:可以設定一個或多個參數,需指定資料型態。
函數的宣告與定義
函數可以先宣告再定義,宣告只需一行並以分號結尾,而定義則包含函數的具體實現。直接定義函數雖然可行,但在大型專案中,先宣告有助於避免「未定義函數」的錯誤並提高程式碼結構的清晰度。
參數預設值
C++ 允許為函數的參數設定預設值,當呼叫函數時如果未提供該參數,則使用預設值。例如:
1 | int sum(int a, int b=20) { |
這樣可以在呼叫 sum(a) 時,自動使用 b=20 作為預設值。


