C 語言是「函數的集合」,程序入口 main() 也是一個函數。掌握函數的定義、聲明、調用、參數傳遞機制及遞歸思想,是寫出模塊化、可復用代碼的基石。
/* 頭文件或源文件頂部聲明 */
int max(int a, int b); // 函數原型聲明
/* 定義可在任意位置,甚至其他 .c 文件 */
int max(int a, int b) { // 定義
return (a > b) ? a : b;
}
好處:支持多文件編程、隱藏實現細節、編譯器提前檢查參數類型匹配。
void swap(int *a, int *b)。/* 經典遞歸:階乘 */
long long fact(int n) {
if (n <= 1) return 1; // 基線條件
return n * fact(n - 1); // 遞歸步驟
}
/* 遞歸三要素 */
1. 基線條件:必須有不再遞歸的出口
2. 遞歸步驟:問題規模逐步縮小
3. 狀態傳遞:通過參數/返回值傳遞中間結果
注意:遞歸優雅但可能棧溢出,深度大時優先考慮迭代。
| 頭文件 | 常用函數 | 用途 |
|---|---|---|
<stdio.h> | printf, scanf, fopen, fgets | 輸入輸出 |
<stdlib.h> | malloc, free, rand, exit | 內存/隨機數/進程控制 |
<string.h> | strlen, strcpy, strcmp, memset | 字符串/內存操作 |
<math.h> | sqrt, pow, sin, floor | 數學運算 |
<time.h> | time, clock, localtime | 時間日期 |