    #include <stdio.h>
    int main() {
     typedef int T;
     T a[] = { 1, 2, 3, 4, 5, 6 };
     T(*pa1)[6] = (T(*)[6])a;
     T(*pa2)[3][2] = (T(*)[3][2])a;
     T(*pa3)[1][2][3] = (T(*)[1][2][3])a;
     T *p = a;
     T *p1 = *pa1;
     T *p2 = **pa2;
     T *p3 = ***pa3;
     printf("%p %p %p %p %p %p %p\n", a, pa1, pa2, pa3, p, p1, p2, p3);
     printf("%d %d %d %d %d %d %d\n", a[5], (*pa1)[5], 
       (*pa2)[2][1], (*pa3)[0][1][2], p[5], p1[5], p2[5], p3[5]);
     return 0;
    }
