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

指標運算符與指標運算式:取址運算符 & 與間接運算符 * 詳解

     編輯:C 語言基礎

C 語言兩大指標運算符

運算符名稱功能範例
&取址運算符取得變數記憶體位址&a 為變數 a 的位址
*間接運算符/指標運算符存取指標指向的變數值*ptr 為 ptr 指向的變數

範例 1:指標交換兩數值(修改所指變數)


int main() {
    int *p1, *p2, a, b, t;
    scanf("%d,%d", &a, &b);
    p1 = &a; p2 = &b;
    if (*p1 < *p2) {  // 比較所指值
        t = *p1;      // 交換所指變數的值
        *p1 = *p2;
        *p2 = t;
    }
    printf("%d,%d\n", a, b);
    return 0;
}

輸入 3,4 → 輸出 4,3。指標始終指向原變數,修改的是變數值。

範例 2:交換指標指向(不動資料,動指標)


int main() {
    int *p1, *p2, a, b, *t;
    scanf("%d,%d", &a, &b);
    p1 = &a; p2 = &b;
    if (*p1 < *p2) {
        t = p1;  // 交換指標本身
        p1 = p2;
        p2 = t;
    }
    printf("%d,%d\n", *p1, *p2);  // 輸出所指值
    return 0;
}

結果相同,但記憶體中資料未移動,只是 p1 指向 b,p2 指向 a。此法在大數據結構排序時極高效(只動指標,不動資料)。

核心等價關係

當 p = &a 成立時:

  • p 等價於 &a
  • *p 等價於 a

此時可用指標形式完整替代直接變數操作。

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