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

C語言函數定義、聲明、調用與參數傳遞機制完整指南

     編輯:關於C語言

函數定義通用形式

無參函數

類型 函數名() {
    類型聲明
    語句
}
// 無返回值用 void
void Hello() { printf("Hello,world\n"); }

有參函數

// 現代格式(ANSI C,推薦)
int max(int a, int b) {
    if (a > b) return a;
    else return b;
}

// 傳統格式(不推薦)
int max(a, b)
int a, b;
{ ... }

函數聲明

類型 函數名(參數類型列表);
// 如 int max(int a, int b);
  • 與定義的函數頭一致,末尾加分號
  • 調用前必須聲明(或定義在前)

函數調用三種形式

參數求值順序

C 標準未規定,編譯器相關。Turbo C 採用右到左求值:


int i = 8;
printf("%d\n%d\n%d\n%d\n", ++i, --i, i++, i--);
// 右到左:i--(8) → i++(7) → --i(7) → ++i(8)
// 輸出:8 7 7 8

注意:輸出順序始終按參數列表左到右,僅求值順序不同。

形參與實參特性

形式語法示例
函數表達式表達式中調用z = max(x, y);
函數語句獨立語句調用printf("%d", a);
函數實參作為實參傳遞printf("%d", max(x, y));
特性形參實參
出現位置函數定義函數調用
內存分配調用時分配,返回釋放調用前已有確定值
類型/數量/順序必須與實參嚴格匹配同上
傳遞方向單向:實參 → 形參-
值變化影響形參變化不影響實參實參值不變

值傳遞演示


void main() {
    int n = 100;
    s(n);
    printf("n=%d\n", n); // 輸出 100
}
int s(int n) {
    for (int i=n-1; i>=1; i--) n += i; // n=5050
    printf("n=%d\n", n); // 輸出 5050
}

數組參數特殊性

  • 數組名作參數 → 傳遞首元素地址(地址傳遞)
  • 形參與實參共享同一數組內存
  • 形參修改數組元素 → 實參數組同步變化

理解參數傳遞機制是編寫正確函數接口、避免副作用錯誤的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved