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

《C和指針》讀書筆記第2章:基本概念——內存、地址與指針本質

     編輯:關於C語言

章節核心觀點

第 2 章奠定了理解指針的基礎:計算機內存模型、變量存儲、地址運算符 & 與間接訪問運算符 * 的本質關系。

1. 內存與地址

  • 內存是位組(byte)序列,每個位組有唯一地址編號(0 到 2^N-1)
  • 變量是內存區域的標籤,編譯器將變量名映射到起始地址
  • sizeof(type) 決定類型佔用的位組數

2. 關鍵運算符

3. 指針變量

  • 指針本質:存儲地址的變量,自身有類型(如 int *)、值(地址)、指向類型(int)、佔用內存(32位機 4 字節)
  • 聲明語法:type *name; → name 是指向 type 的指針
  • 指針類型決定了解引用時訪問的位組數及指針算術運算步長

4. 空指針

  • NULL(通常定義為 (void*)0)表示不指向任何有效對象
  • 使用前必須檢查:if (p != NULL) *p = ...

5. 指針與數組的初步聯系

  • 數組名在大多數表達式中轉換為指向首元素的指針(a == &a[0])
  • a[i] 等價於 *(a + i)
  • 但數組名不是指針變量:不可修改(a++ 非法)、sizeof(a) 返回整個數組大小

學習建議

  1. 畫內存圖:變量、指針、指向關系可視化
  2. 區分「指針類型」與「指向類型」:int **p 類型是 int**,指向類型是 int*
  3. 養成初始化習慣:int *p = NULL; 或 int *p = &a;
  4. 理解 *p++、(*p)++、*(p++) 的結合順序差異

本章雖基礎,但對後續理解指針算術、數組指針、函數指針、動態內存至關重要。建議配合調試器觀察內存地址變化加深印象。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
運算符名稱作用示例
&取地址運算符獲取變量/對象的起始地址int *p = &a;
*間接訪問/解引用訪問地址指向的對象*p = 10;