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

C 語言函數定義完整指南:無參/有參函數、函數頭與函數體、定義位置靈活性

     編輯:關於C語言

函數定義是 C 程式的基本構建塊。本文詳細拆解無參與有參函數的語法結構、函數頭與函數體組成、定義位置的自由度,並以 max 函數為例完整展示。

一、無參函數定義

返回型別 函數名() {
    // 宣告區
    // 執行語句
}
  • 括號 () 不可省略,表示無參數。
  • 無需返回值時,返回型別寫 void。

範例

void hello(void) {
    printf("Hello, world\n");
}

二、有參函數定義

返回型別 函數名(型別 參數名, 型別 參數名, ...) {
    // 宣告區
    // 執行語句
}
  • 形參表中**必須給出每個參數的型別**,不可寫 int a, b(舊式 K&R 風格已淘汰)。
  • 形參在函數體內視為區域變數,初始值由呼叫者傳入。
  • 有返回值函數**至少需一個 return 運算式;**。

範例:求兩數最大值

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

三、函數定義位置自由

C 標準允許函數定義置於**原始檔任意位置**:main 之前、之後、甚至分散在多檔(需前置宣告)。

完整程式:定義在 main 之前

#include 

int max(int a, int b) {      // 定義在 main 前
    if (a > b) return a;
    return b;
}

int main(void) {
    int x, y, z;
    printf("input two numbers:\n");
    scanf("%d%d", &x, &y);
    z = max(x, y);           // 呼叫
    printf("maximum=%d", z);
    return 0;
}

此處 main 內無需額外宣告 max,因定義已先於呼叫出現。

定義在 main 之後(需前置宣告)

#include 

int max(int a, int b);       // 前置宣告

int main(void) {
    int x, y, z;
    scanf("%d%d", &x, &y);
    z = max(x, y);
    printf("maximum=%d", z);
    return 0;
}

int max(int a, int b) {      // 定義在 main 後
    return (a > b) ? a : b;
}

四、函數頭 vs 函數宣告

項目函數頭(定義首行)函數宣告
語法int max(int a, int b)int max(int a, int b);
結尾無分號,接 {**必須以分號結尾**
用途定義函數本體告知編譯器型別資訊

五、常見錯誤

  • 形參列表寫 int a, b → 錯誤,應為 int a, int b。
  • 函數宣告漏分號 → 語法錯誤。
  • void 函數寫 return 值; → 編譯錯誤。
  • 函數定義巢狀(函數內定義函數)→ C 不支援,編譯錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved