Function 函式
# C 函式基礎觀念與語法
函式(Function)是一段可以重複使用的程式碼,用來完成特定工作。將程式分成多個函式,可以讓程式更容易閱讀、測試與維護。
---
## 一、函式的基本結構
```c
回傳型別 函式名稱(參數列表)
{
// 函式內容
return 回傳值;
}
```
例如:
```c
int add(int a, int b)
{
return a + b;
}
```
說明:
- `int`:函式的回傳型別
- `add`:函式名稱
- `int a, int b`:函式參數
- `return a + b;`:回傳結果
---
## 二、函式定義
函式定義是實際撰寫函式內容的地方。
```c
int square(int number)
{
return number * number;
}
```
此函式名為 `square`,接受一個整數參數 `number`,並回傳它的平方值。
如果函式不需要回傳值,可以使用 `void`:
```c
void sayHello()
{
printf("Hello!\n");
}
```
---
## 三、函式呼叫
要執行函式,必須在其他地方呼叫它。
```c
sayHello();
```
有參數的函式,呼叫時需要傳入對應的值:
```c
int result = square(5);
printf("%d\n", result);
```
執行結果:
```text
25
```
---
## 四、函式參數
參數是傳入函式的資料。
```c
int add(int x, int y)
{
return x + y;
}
```
呼叫時:
```c
int result = add(3, 4);
```
其中:
- `x`、`y` 是函式定義中的形式參數
- `3`、`4` 是呼叫時傳入的實際參數
C 語言一般採用「傳值呼叫」,也就是函式會取得參數的副本,修改參數通常不會影響原本的變數。
---
## 五、函式回傳值
函式可以使用 `return` 回傳資料。
```c
int multiply(int a, int b)
{
return a * b;
}
```
呼叫後可以將結果存入變數:
```c
int answer = multiply(2, 5);
```
如果函式沒有回傳值,使用 `void`:
```c
void printMessage()
{
printf("Welcome!\n");
}
```
`void` 函式可以使用單獨的 `return;` 提早結束,但不需要回傳資料。
---
## 六、函式宣告(函式原型)
如果函式定義寫在 `main()` 後面,必須先宣告函式原型:
```c
#include <stdio.h>
int add(int a, int b); // 函式宣告
int main()
{
int result = add(10, 20);
printf("%d\n", result);
return 0;
}
int add(int a, int b) // 函式定義
{
return a + b;
}
```
函式原型的格式如下:
```c
回傳型別 函式名稱(參數型別);
```
---
# 程式範例 1:無參數、無回傳值
```c
#include <stdio.h>
void printWelcome()
{
printf("歡迎學習 C 語言!\n");
}
int main()
{
printWelcome();
return 0;
}
```
說明:
- `printWelcome()` 沒有參數
- 回傳型別是 `void`
- 呼叫函式後直接印出訊息
輸出:
```text
歡迎學習 C 語言!
```
---
# 程式範例 2:有參數、有回傳值
```c
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
int result;
result = add(10, 20);
printf("總和 = %d\n", result);
return 0;
}
```
說明:
- `add()` 接受兩個整數參數
- 將兩數相加後回傳
- `main()` 使用變數 `result` 儲存回傳值
輸出:
```text
總和 = 30
```
---
# 程式範例 3:判斷偶數或奇數
```c
#include <stdio.h>
int isEven(int number)
{
if (number % 2 == 0)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int number = 8;
if (isEven(number))
{
printf("%d 是偶數\n", number);
}
else
{
printf("%d 是奇數\n", number);
}
return 0;
}
```
說明:
- `%` 是取餘數運算子
- 若數字除以 2 的餘數為 0,就是偶數
- `isEven()` 回傳:
- `1`:是偶數
- `0`:不是偶數
輸出:
```text
8 是偶數
```
---
## 重點整理
| 概念 | 說明 |
|---|---|
| 函式定義 | 撰寫函式實際執行的內容 |
| 函式呼叫 | 使用函式,例如 `add(3, 4)` |
| 函式參數 | 傳入函式的資料 |
| 回傳值 | 函式執行後傳回的結果 |
| `void` | 表示函式沒有回傳值 |
| `return` | 結束函式並回傳資料 |
| 函式原型 | 先告知編譯器函式的名稱、參數與回傳型別 |
常見的函式格式如下:
```c
回傳型別 函式名稱(參數)
{
// 執行內容
return 回傳值;
}
```
相關學習地圖、教學課程
C 語言,系統程式