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

C語言知識體系總結:從選擇結構到指針、內存、函數與結構體

     編輯:關於C語言

C語言知識體系總結:從選擇結構到指針、內存、函數與結構體

學習 C 語言的核心知識圖譜,梳理六大支柱模組。

一、選擇與循環結構

  • if:布爾語境下直接判斷變量 (if (ptr)),避免 == TRUE 宏依賴。浮點數比較用 fabs(a-b) < EPS。
  • while:條件表達式求值為 0 即假。while(1) 死循環需 break/return 跳出。
  • for:for(init; cond; step) 三部分均可為空。經典遍歷 for(i=0;i 邊界嚴防越界。

二、陣列

  • 下標從 0 起,越界 = 未定義行為 (段錯誤/數據竄改)。
  • 二維陣列內存連續,行優先:a[i][j] 偏移 i*COLS + j。
  • 字符陣列:char s[] = "text" 自帶 \0;char s[] = {'t','e'} 無結束符,不可作字符串用。
  • 逗號表達式陷阱:int a[3][2] = {(0,1),(2,3),(4,5)} → 實際 {1,3,5} (取最後值)。

三、指針

  • 指針 = 地址 (常量);指針變量 = 存地址的變量。*p 解引用訪問內容。
  • 安全鐵律:用前判空、釋放後置 NULL、const 修飾只讀、assert 驗證有效。
  • 多級指針:int **pp 指向 int*,常用於修改指針本身 (如鏈表頭插入)。
  • 推薦閱讀:《C和指針》、《C語言深度剖析》。

四、內存操作

  • 棧幀:函數調用自動分配/釋放,生命週期隨作用域。
  • 堆:malloc/free 手動管理,**必檢查返回值**、**用完必釋放**、**釋放後置 NULL** 防野指針。
  • 靜態/全局區:程式啟動分配,退出釋放。

五、函數

  • 六大作用:降低複雜度、消除重複、限制變更影響、隱藏順序、提升性能 (內聯)、集中控制。
  • 遞歸三要素:基線條件、縮小規模、合併結果。尾遞歸可優化為迴圈。

六、結構體

  • 自定義類型,聚合異構數據。
  • 實現鏈表節點:struct Node { T data; Node* next; }。
  • 對齊與填充:sizeof(struct) 受最寬成員對齊影響,可用 #pragma pack 或字段重排優化。

實戰項目建議

  1. 通訊錄管理系統 (結構體+鏈表/動態陣列+文件持久化)
  2. 簡易 Shell (進程控制+管道+信號)
  3. 位圖/字符設備驅動 (位運算+內存映射)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved