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