#include <stdio.h>
#include <string.h>
#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;
}