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

C++ Win 編程實踐(4):二維數組指針訪問多種寫法

     編輯:關於C++

代碼示例

演示二維數組 int x[2][4] 的三種指針訪問方式:

  1. 單指針 int *x1ptr = &x[0][0],按一維偏移 *(x1ptr + i*4 + j)。
  2. 行指針 int (*x2ptr)[4] = x,遍歷行 (*x2ptr)[j]。
  3. 雙重解引用 *(*(x+i)+j),標準數組指針語法。

完整代碼

#include <iostream>
using std::cout; using std::endl; using std::cin;

int main() {
    int x[2][4];
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 4; ++j)
            x[i][j] = i*10 + j;

    int *x1ptr = &x[0][0];
    int (*x2ptr)[4] = x;

    // 方式1: 行指針遍歷
    for (; x2ptr <= &x[1]; ++x2ptr) {
        for (int j = 0; j < 4; ++j) cout << (*x2ptr)[j] << ' ';
        cout << endl;
    }
    // 方式2: 雙重解引用
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 4; ++j) cout << *(*(x+i)+j) << ' ';
        cout << endl;
    }
    // 方式3: 單指針偏移
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 4; ++j) cout << *(x1ptr + i*4 + j) << ' ';
        cout << endl;
    }
    cin.get();
    return 0;
}

輸出結果

0 1 2 3
10 11 12 13
0 1 2 3
10 11 12 13
0 1 2 3
10 11 12 13

總結

理解二維數組在內存中連續佈局,行指針 int (*p)[cols] 步長為一行大小,單指針需手動計算偏移。靈活運用指針能簡化某些底層操作。

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