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

C語言基礎知識體系總結:程序結構、數據存儲、預處理與核心語法精華

     編輯:關於C語言

C語言核心知識點速查手冊(必考必會版)

C 語言作為計算機科學的基石,其核心概念貫穿於操作系統、嵌入式開發、高性能計算等各個領域。本文梳理了從程序結構到預處理機制的高頻考點與實戰避坑指南,適合考試複習、面試熱身及日常查漏補缺。

一、 程序宏觀結構「三大支柱」

  1. 三種基本控制結構:順序、選擇(分支)、循環 —— 結構化程序設計理論基石(Böhm-Jacopini 定理)。
  2. 入口唯一性:程序執行從 main() 開始,有且僅有一個 main 函數,自上而下執行(遇分支跳轉、遇循環迭代)。
  3. 函數嵌套限制:C 標準禁止函數內部定義函數(但 GNU C 支持嵌套函數作為擴展,非標準)。

二、 數據在計算機中的本質

  • 二進制存儲:所有數據(指令、數值、字符)均以二進制(0/1)形式存放於內存。
  • 地址即位置:每個字節擁有唯一地址編號,指針本質是存儲地址的變量。
  • 基本單位換算:1 Byte (字節) = 8 bits (位);sizeof 運算符返回類型/變量佔用字節數(編譯期確定)。

三、 編譯預處理階段深度解析

預處理是編譯器處理源碼的第一步(.c → .i),不佔用運行時間,處理以 # 開頭的指令。

1. 核心規則

  • 預處理命令不以分號結尾(加分號會被視為宏體一部分)。
  • 源程序以 ASCII 文本形式存儲,經預處理、編譯、彙編、鏈接生成可執行文件。

2. 四大常用預處理指令

指令用途關鍵點
#define宏定義(無參/帶參)字符串替換而非計算;參數兩側加括號防運算符優先級錯誤;#undef 取消定義
#include文件包含<> 搜標準路徑,"" 先搜當前目錄;防止重複包含用 #ifndef/#define/#endif 或 #pragma once
#ifdef/#ifndef/#if/#elif/#else/#endif條件編譯編譯期裁剪代碼,減小體積、提高效率、實現跨平台
#pragma編譯器指導如 #pragma pack(n) 設置對齊、#pragma warning 控制警告

3. 標準預定義宏(不可 #undef)

__DATE__   // 編譯日期 "Mmm dd yyyy"
__TIME__   // 編譯時間 "hh:mm:ss"
__FILE__   // 當前源文件名
__LINE__   // 當前行號 (int)
__func__   // 當前函數名 (C99)
__STDC__   // 標準 C 符合性標識

調試神器:printf("Error at %s:%d in %s()\n", __FILE__, __LINE__, __func__);

四、 語法核心考點速記表

知識點核心結論
算法特性可無輸入,必有輸出;有窮性、確定性、可行性
break 作用域僅跳出最近一層 switch 或循環(for/while/do-while)
運算符優先級逗號運算符最低;賦值運算符倒數第二;單目 > 算術 > 移位 > 關系 > 邏輯 > 條件 > 賦值 > 逗號
整數提升char/short 參與運算自動提升為 int;float 傳參提升為 double (舊式聲明)
main 返回值返回 0 表示成功,非 0 表示失敗(POSIX 標準)

五、 實戰避坑指南

  1. 宏陷阱:#define SQUARE(x) x*x → SQUARE(3+2) = 3+2*3+2 = 11。修正:#define SQUARE(x) ((x)*(x))。
  2. 條件編譯調試:#ifdef DEBUG ... #endif 替代註釋掉代碼,一鍵切換發布/調試版。
  3. 頭文件衛士:防止重複定義導致編譯錯誤。
  4. 標準庫函數:熟練掌握 string.h (strcpy/strlen/strstr)、stdlib.h (atoi/malloc/free)、stdio.h (scanf/printf 格式控制)。

學習建議:C 語言看似簡單,實則細節決定成敗。建議配合《C程序設計語言》(K&R)、《C專家編程》、《C陷阱與缺陷》經典著作,多寫代碼、多看預處理輸出 (gcc -E)、多閱讀標準庫源碼實現。

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