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

C語言函數定義詳解:現代格式與傳統格式、函數調用三種形式、參數傳遞機制深度解析

     編輯:C 語言基礎

函數定義的兩種格式

傳統格式(K&R 風格):形參列表僅寫名稱,類型另行聲明。
現代格式(ANSI C):類型 函數名(類型 形參, ...),將類型合併在參數列表,編譯器可做嚴格檢查,推薦使用。

/* 傳統 */ int max(a, b) int a, b; { ... }
/* 現代 */ int max(int a, int b) { if (a > b) return a; else return b; }

函數調用的三種形式

  1. 函數表達式:z = max(x, y); 返回值參與運算。
  2. 函數語句:printf("%d", a); 以語句形式調用。
  3. 函數實參:printf("%d", max(x, y)); 返回值作為另一函數實參。

實參求值順序與副作用

C 標準未規定實參求值順序(左→右或右→左),編譯器自行決定。Turbo C 採右→左。例:printf("%d %d %d %d", ++i, --i, i++, i--); 輸出順序固定但值依求值序而異,寫程式時避免在同一實參表中對同一變量多次副作用操作。

形參與實參的關係(值傳遞)

  • 形參僅在調用時分配記憶體,調用結束即釋放,屬局部變量。
  • 實參必須有確定值(常量、變量、表達式、函數調用)。
  • 數量、類型、順序必須嚴格匹配。
  • 傳遞是單向的:實參值 → 形參,形參變化不影響實參。
void s(int n) { for (i = n-1; i >= 1; i--) n += i; printf("n=%d\n", n); }
main() { int n; scanf("%d", &n); s(n); printf("n=%d\n", n); }

輸入 100,函數內 n 變 5050,但主函數 n 仍為 100,證明值傳遞單向性。

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