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

C 語言指標變數通俗入門:從記憶體地址到指標操作

     編輯:C 語言基礎

資料在記憶體中需有唯一編號(地址),就像門牌號。32 位環境下位址範圍 0 ~ 0xFFFFFFFF(4GB)。

指標變數定義

資料類型 *變數名;          // 宣告
資料類型 *變數名 = 值;      // 宣告並初始化
  • * 表示這是指標變數。
  • 資料類型 表示指向資料的類型。
int a = 100;
int *p_a = &a; // 取址賦值

指標可多次重新賦值指向不同資料。定義時必須帶 *,賦值時不可帶 *。

透過指標取得/修改資料

int a = 15;
int *p = &a;
printf("%d, %d\n", a, *p); // 15, 15

*p = 99; // 修改 a 為 99
printf("%d, %d\n", a, *p); // 99, 99

*p 代表指標指向的資料本身,等價於 a。使用指標屬「間接存取」(兩次運算:取指標值→取資料),直接用變數名屬「直接存取」(一次運算),指標成本略高。

交換兩變數值範例

int a = 100, b = 999, temp;
int *pa = &a, *pb = &b;
temp = *pa; *pa = *pb; *pb = temp; // 成功交換

臨時變數 temp 必不可少。

* 與 & 組合謎題

  • *&a ≡ *(&a) ≡ a:取址再取值,回原點。
  • &*pa ≡ &(*pa) ≡ pa:取值再取址,回原點。

* 三大用途總結

  1. 乘法運算:c = a * b
  2. 定義指標變數:int *p = &a
  3. 解引用取值:*p = 100; b = *p

定義時的 * 與使用時的 * 意義完全不同,請務必區分。

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