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

《C 和指標》學習筆記 4:函數設計精髓——參數傳遞、ADT 黑盒封裝與遞歸實作

     編輯:關於C語言

參數傳遞:Call by Value

C 僅支援**值傳遞**。若需修改呼叫端變數,必須傳址(指標)。

ADT 與黑盒封裝

透過 static 限制內部函數/資料作用域,僅對外暴露介面函數,實現資訊隱藏:

// user.h
#define MAXLEN 3
typedef struct { char *name, *phone, *addr; } User;
const char *lookupPhone(const char *name);
const char *lookupAddr(const char *name);

// user.c
static User users[MAXLEN] = { {"u1","111","aaa"}, ... };
static const User *find(const char *name) { ... } // 內部函數,外部不可見
const char *lookupPhone(const char *name) { return find(name)->phone; }

// main.c
#include "user.h"
printf("%s", lookupPhone("u1")); // 僅透過介面存取

遞歸:費氏數列

int fib(int n) {
    if (n <= 2) return 1;
    return fib(n-1) + fib(n-2);
}
// 呼叫樹呈指數級增長,教學用遞歸,生產環境建議改迭代或備忘錄

遞歸呼叫樹

設計原則

  • 單一職責:函數只做一件事
  • 最小權限:static 隱藏內部細節
  • 介面穩定:呼叫端不依賴實作細節
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved