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

高質量C代碼:循環遍歷優化技巧與多維數組訪問效率原則

     編輯:關於C語言

循環變量命名與層級控制

  • 迭代變量優先用 i, j, k, m, n 等單字母
  • 嵌套層級不超過3層,超過需重構(拆函數/降維)
  • 終止條件首選 <,非常規條件(<=/>)必須註釋說明

二維數組遍歷:內層走連續內存


int array[ROW][COL];
for (int i = 0; i < ROW; i++) {        // 外層:行
    for (int j = 0; j < COL; j++) {    // 內層:列(連續內存)
        process(array[i][j]);
    }
}

原理:C語言按行主序存儲,array[i][j] 與 array[i][j+1] 地址相鄰。內層遍歷列利用CPU緩存行預取,訪問效率最高。

降維打擊:將固定小第二維攤平為一維

如1000個坐標點,原定義 int pos[1000][2] 需雙層循環。優化為:


// 定義
int pos[1000][2];  // [0]=x, [1]=y

// 單層遍歷
for (int i = 0; i < 1000; i++) {
    int x = pos[i][0];
    int y = pos[i][1];
    process(x, y);
}

收益:消除內層循環開銷(條件判斷、跳轉、計數器更新),CPU流水線更友好,代碼更簡潔。

進階技巧:結構體數組替代二維數組


typedef struct { int x, y; } Point;
Point points[1000];

for (int i = 0; i < 1000; i++) {
    process(points[i].x, points[i].y);
}

語義更清晰,擴展屬性(如z、color)無需改動循環結構。

總結

循環遍歷看似基礎,實則蘊含內存訪問模式優化與代碼可維護性雙重考量。掌握「內層走連續內存、小固定維度攤平、語義化用結構體」三大技法,寫出高效優雅的C代碼。

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