首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言自定義函數完整指南:無參/有參定義、調用與 return 控制流

     編輯:C 語言基礎

什麼是自定義函數?

函數是可重用代碼塊,獨立完成特定功能。C 語言提供庫函數,開發者也可編寫自定義函數,二者無本質區別,僅開發者不同。

無參函數定義

返回類型 函數名() {
    // 函數體(即使只有一條語句也需 { })
    return 表達式;  // 非 void 必須有返回
}

示例:計算 1+...+100

int sum() {
    int i, sum = 0;
    for (i = 1; i <= 100; i++) sum += i;
    return sum;
}

int main() {
    int a = sum();  // 調用並接收返回值
    printf("The sum is %d\n", a);
    return 0;
}

運行結果

The sum is 5050

無返回值函數(void)

void hello() {
    printf("Hello, world!\n");
    // 可無 return,或寫 return; 提前退出
}
  • void = 空類型,明確表示無有意義返回值
  • 調用時不能用賦值語句接收

有參函數定義

返回類型 函數名(類型 形參1, 類型 形參2, ...) {
    // 函數體可使用形參
    return 表達式;
}

示例:求兩數最大值

int max(int a, int b) {
    if (a > b) return a;
    else return b;
}

int main() {
    int n = max(10, 20);       // 常量實參
    int x = 10, y = 20;
    n = max(x, y);             // 變量實參
    n = max(x, 20);            // 混合實參
    printf("Max: %d\n", n);
    return 0;
}

運行結果

Max: 20

調用機制:實參 → 形參(值傳遞)

調用 max(num1, num2) 相當於:
a = num1;
b = num2;
  • 定義時形參值未知
  • 調用時實參值複製給形參
  • 實參形參類型、數目必須一致

return 控制流關鍵特性

  1. 立即退出:遇到 return 後續代碼永不執行
  2. 多返回點:可在不同分支 return 不同值
  3. 僅一個生效:單次調用只能執行一個 return

示例:多返回點

int max(int a, int b) {
    int n = (a > b) ? a : b;
    return n;
    printf("This never prints\n");  // 死代碼
}

函數定義位置規則

  • 不能嵌套定義:函數內不能定義函數
  • 先定義後使用(或提前聲明)
  • main 也是函數,系統啟動時調用 main

完整程序結構示例

#include <stdio.h>

// 函數聲明(可選,若定義在前可省略)
int max(int a, int b);
void printResult(int val);

int max(int a, int b) { ... }      // 定義 1
void printResult(int val) { ... }  // 定義 2

int main() {                       // 主函數
    // 調用上述函數
    return 0;
}

良好函數設計原則

  • 單一職責:一個函數只做一件事
  • 名稱語義化:calculateSum 優於 func1
  • 參數最小化:能用局部變量別用參數
  • 返回值有意義:錯誤碼、計算結果、狀態標誌
  • 文檔註釋:說明功能、參數、返回值、副作用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved