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

C語言概述與數據類型體系詳解

     編輯:C 語言入門

一、C 語言概述

1. 誕生歷程

  • 1972 年貝爾實驗室 D.M.Ritchie 基於 B 語言設計,取 BCPL 第二字母命名為 C。
  • 1978 年《The C Programming Language》出版,ANSI/ISO 標準化(C89/C90、C99、C11、C17)。
  • 現代編譯器多以 ANSI C 為基礎擴展。

2. 語言特點

  • 可移植性強,跨平台運行。
  • 語法簡潔靈活,可直接訪問硬件。
  • 執行效率高,接近匯編。

3. 嵌入式開發中使用 C 的原因

  • 內核多為 C 實現,驅動開發需與內核交互。
  • 直接操作硬件寄存器、內存映射。
  • 匯編雖快但難實現複雜邏輯(如循環),通常僅用於初始化。

二、數據類型體系

1. 分類

  • 基本類型:void、字符型(char)、數值型(整型 short/int/long、實型 float/double)。
  • 構造類型:數組、結構體、聯合體、枚舉、指針。

2. 常見編譯器類型大小(GCC x86 為例)

類型字節數
char1
short2
int/long/float4
double8

指針大小由 OS 決定:32 位 4 字節,64 位 8 字節。

3. 變量三大屬性

  • 數據類型:決定佔用空間大小。
  • 作用域:可見性範圍(局部/全局/文件)。
  • 存儲類型:內存佈局與生存期(auto/static/extern/register)。

4. 聲明 vs 定義

  • 定義:分配內存,僅一次(int a;)。
  • 聲明:告知編譯器已存在,不分配內存(extern int a;)。
  • 定義性聲明(分配空間)vs 引用性聲明(跨文件引用)。

5. 內存區域劃分

棧區:局部變量、參數、自動變量(先進後出,系統管理)
堆區:malloc/realloc/calloc 分配(先進先出,用戶管理)
數據段:
  .bss     未初始化全局/靜態變量
  .rodata  常量、字符串字面量
  .data    初始化全局/靜態變量
代碼段:指令、只讀數據

6. 全局 vs 局部變量對比

全局/靜態局部
存放.data/.bss棧
默認初始化是(0/NULL)否(隨機值)
釋放時機程序結束函數返回
作用域全局/文件塊級

static 修飾局部變量:僅初始化一次,生存期全程,作用域仍局部。修飾全局:限制文件內可見。

7. 右左法則讀懂複雜聲明

從變量名出發,先右後左,遇括號反向:

  • int *a[10]:a 是數組 → 元素是指針 → 指向 int
  • int (*a)[10]:a 是指針 → 指向數組 → 元素是 int
  • int *(*a)(int):a 是指針 → 指向函數(參數 int) → 返回指針 → 指向 int

8. sizeof vs strlen

  • sizeof:編譯期運算符,得類型/表達式佔用字節數。類型須加括號,變量可不加。
  • strlen:運行期函數,從地址掃描至首個 \0,返回字符數(不含 \0)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved