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

C 語言學習教程第一章:C 語言發展史、特點、版本與源程序結構全解析

     編輯:關於C語言

前言

作為現代計算機科學基石之一,C 語言歷經半個世紀仍活躍於系統核心、嵌入式、高效能計算等領域。本章從歷史脈絡、語言特性、主流版本、C/C++ 關係、源程序結構規範、書寫風格、字符集與詞法六大維度,為初學者建立完整的 C 語言宏觀認知框架。

一、C 語言發展脈絡

年份里程碑
1970 年代初貝爾實驗室開發,服務 UNIX 系統
1978K&R 著《The C Programming Language》,確立「K&R C」事實標準
1983ANSI X3J11 委員會發布 ANSI C (C89),統一語言規範
1989/1990ISO/IEC 9899:1990 (C90) 國際標準化
1999/2011/2018C99、C11、C18 持續演進

二、C 語言核心特點

  1. 結構化:模組化組織、層次清晰、易調試維護。
  2. 表達力強:豐富運算符、多樣數據類型、支援複雜數據結構。
  3. 底層訪問:直接操作物理記憶體地址、位級運算,融合高級與低級語言優勢。
  4. 雙重適用:既可開發作業系統、驅動等系統軟體,亦適合應用層開發。
  5. 高效能、強移植:編譯生成機器碼,極小運行時開銷;標準庫抽象平台差異,廣泛移植於大中小微各類架構。

三、主流編譯器版本(DOS/Windows 早期視角)

  • Microsoft C (MSC):微軟官方,後演變為 Visual C++。
  • Borland Turbo C:編譯極快、IDE 友善、教學首選。
  • AT&T C:商業 UNIX 發布版本基準。

上述版本均在 ANSI C 基礎上各自擴展(如圖形庫、擴展關鍵字),增強實用性。

四、C 與 C++:繼承與超越

  • 1983 年 Bjarne Stroustrup 在 C 礎上推出 C++,引入類、繼承、多態、模板等**面向對象**機制。
  • 主流 C++ 編譯器:Borland C++ 4.5、Symantec C++ 6.1、Microsoft Visual C++ 2.0 (時代背景)。
  • 關鍵認知:C 是 C++ 子集(近似),語法高度兼容。**先精通 C,再學 C++ 可事半功倍**,以熟悉語法降低 OOP 認知負荷。

五、C 源程序結構特點與規範

1. 結構組成要素

/* 預處理指令 */
#include <stdio.h>
#include <math.h>

/* 全域聲明/定義 */
int max(int a, int b);  // 函數聲明

/* 主函數 - 唯一入口 */
main() {
    /* 變量聲明部分 */
    double x, s;

    /* 執行語句部分 */
    printf("input number:\n");
    scanf("%lf", &x);
    s = sin(x);
    printf("sine of %lf is %lf\n", x, s);
}

/* 用戶自定義函數 */
int max(int a, int b) {
    if (a > b) return a;
    else return b;
}

2. 必遵守的六大結構規則

  1. 程序可由多源文件組成,每文件含一或多函數。
  2. 整個程序**有且僅有一個** main 函數。
  3. 預處理命令(#include、#define 等)通常置於文件最前端。
  4. 每個聲明、語句必以分號結束;但預處理命令、函數首部、右大括號 } 後**不加**分號。
  5. 標識符、關鍵字間至少一空格隔開;若有明顯界符(如 ( ; ,)可省略空格。
  6. 註釋以 /* */ 包裹,可跨行,編譯器忽略。

3. 書寫風格建議(養成良好習慣)

  • 一聲明/一語句佔一行。
  • { } 獨佔一行,與所屬結構首字符對齊。
  • 內層語句相對外層縮進(建議 4 空格),增強可讀性。

六、C 語言字符集

字符常量、字符串常量、註釋中可包含漢字或其他可顯示圖形符號。

七、C 語言詞法六大類

  1. 標識符:變量/函數/標號名稱。規則:字母/數字/下劃線組成,**首字符必為字母或下劃線**。區分大小寫。長度受編譯器限制(早期常取前 8 位有效)。命名應見名知意。
  2. 關鍵字 (保留字):語言賦予特定含義,不可作標識符。分類:
    ① 類型說明符 (int, double...)
    ② 語句定義符 (if, else, switch...)
    ③ 預處理命令字 (include, define...)
  3. 運算符:1~多字符,與運算元構成表達式。豐富程度遠超同期語言。
  4. 分隔符:逗號 ,(參數/聲明分隔)、空格(詞法分隔)。
  5. 常量:數值、字符、字符串、符號常量、轉義字符等(詳見第二章)。
  6. 註釋符:/* ... */,可現於程序任何位置,亦可暫時屏蔽代碼段。

八、格式化輸入輸出初探 scanf/printf

兩函數參數表結構:**格式控制串** + **參數表**。

  • 格式串雙引號括起,含格式字符(如 %d、%lf)與普通字符(原樣輸出)。
  • 參數表對應格式字符順序給出變量地址(scanf)或值(printf),逗號分隔。
  • 範例:printf("sine of %lf is %lf\n", x, s); 兩個 %lf 分別對應 x、s。

九、用戶自定義函數調用機制

int max(int a, int b);  // 聲明
main() {
    int x, y, z;
    scanf("%d%d", &x, &y);
    z = max(x, y);        // 調用:實參傳值給形參
    printf("max=%d", z);
}
int max(int a, int b) {   // 定義
    if (a > b) return a;
    else return b;
}
  • 函數間為**並列關係**,main 可調用其他函數。
  • 自定義函數需在調用前**聲明**(或定義前置),告知編譯器返回類型與參數。
  • 調用時發生**值傳遞**:實參值複製給形參,函數內修改不影響實參。
  • return 將計算結果傳回調用處。

總結

本章建立了 C 語言的歷史定位、語言特性、版本演進、與 C++ 關係、源程序骨架規範、詞法分類、基本 I/O 格式、函數調用模型等核心認知地圖。後續章節將逐層深入:數據類型與運算符 → 控制流程 → 函數 → 陣列 → 指針 → 結構/聯合/枚舉 → 文件操作 → 預處理,構建完整知識體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類別內容備註
字母A~Z, a~z (52個)區分大小寫
數字0~9 (10個)
空白符空格、制表符 \t、換行符 \n僅在字符/字符串常量中屬內容;其他場合僅作分隔,編譯器忽略
標點/特殊符號~ ! @ # $ % ^ & * ( ) - _ = + [ ] { } | \ ; : ' " , . < > / ?構成運算符、分隔符等