三维数组的存储映射


#include 
#include 

#define HGT 10
#define ROW 11
#define COL 12

/* 重载指针的运算,用秦九韶算法优化多项式的计算 */
static int getValue(int (* const a)[ROW][COL], int i, int j, int k) {
    int offset = (i * ROW + j) * COL + k;   /* i*ROW*COL + j*COL + k */
    return *((int *)a + offset);
}

int main(void) {
    static int a[HGT][ROW][COL];

    memset(a, 0, sizeof(a));
    a[9][8][7] = 12;
    printf("%d\n", getValue(a, 9, 8, 7));
    printf("%d\n", *(*(*(a + 9) + 8) + 7));
    printf("%d\n", 7[8[9[a]]]); /* special 因为加法满足交换律 */

    return 0;
}




你可能感兴趣的:(程序设计与算法)