#include <iostream>
void printarray(int a[2][2])
{
printf("#####2D access... \n");
for (int i = 0; i<2; i++)
{
for (int j = 0; j<2; j++)
{
printf("## %p-->%d \n", &a[i][j], a[i][j]);
}
}
}
int main()
{
int *a = (int*)calloc(sizeof(int), 4);
for(int i=0;i<4;i++){
a[i]=i*10;
}
for(int i=0;i<4;i++){
printf("## %p-->%d \n", &a[i], a[i]);
}
int (&arr)[2][2] = reinterpret_cast<int(&)[2][2]>(a);
printarray(arr);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBwcmludGFycmF5KGludCBhWzJdWzJdKQp7CiAgICBwcmludGYoIiMjIyMjMkQgYWNjZXNzLi4uIFxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaTwyOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGo8MjsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIjIyAlcC0tPiVkIFxuIiwgJmFbaV1bal0sIGFbaV1bal0pOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgKmEgPSAoaW50KiljYWxsb2Moc2l6ZW9mKGludCksIDQpOwogICAgZm9yKGludCBpPTA7aTw0O2krKyl7CiAgICAgICAgYVtpXT1pKjEwOwogICAgfQogICAgZm9yKGludCBpPTA7aTw0O2krKyl7CiAgICAgICAgcHJpbnRmKCIjIyAlcC0tPiVkIFxuIiwgJmFbaV0sIGFbaV0pOwogICAgfQoKICAgIGludCAoJmFycilbMl1bMl0gPSByZWludGVycHJldF9jYXN0PGludCgmKVsyXVsyXT4oYSk7CiAgICBwcmludGFycmF5KGFycik7CgogICAgcmV0dXJuIDA7Cn0K