#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]);
}
}
}
void printarray(int b[4])
{
printf("#####1D access... \n");
for (int i = 0; i<4; i++)
{
printf("## %p-->%d \n", &b[i], b[i]);
}
}
int main()
{
int a[4] = { 10,20,30,40 };
int(&arr)[2][2] = reinterpret_cast<int(&)[2][2]>(a);
printarray(arr);
int b[2][2] = {{ 10,20 },{ 30,40 }};
int(&brr)[4] = reinterpret_cast<int(&)[4]>(b);
printarray(brr);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBwcmludGFycmF5KGludCBhWzJdWzJdKQp7CglwcmludGYoIiMjIyMjMkQgYWNjZXNzLi4uIFxuIik7Cglmb3IgKGludCBpID0gMDsgaTwyOyBpKyspCgl7CgkJZm9yIChpbnQgaiA9IDA7IGo8MjsgaisrKQoJCXsKCgkJCXByaW50ZigiIyMgJXAtLT4lZCBcbiIsICZhW2ldW2pdLCBhW2ldW2pdKTsKCQl9Cgl9Cn0KCnZvaWQgcHJpbnRhcnJheShpbnQgYls0XSkKewoJcHJpbnRmKCIjIyMjIzFEIGFjY2Vzcy4uLiBcbiIpOwoJZm9yIChpbnQgaSA9IDA7IGk8NDsgaSsrKQoJewoJCXByaW50ZigiIyMgJXAtLT4lZCBcbiIsICZiW2ldLCBiW2ldKTsKCX0KfQoKaW50IG1haW4oKQp7CglpbnQgYVs0XSA9IHsgMTAsMjAsMzAsNDAgfTsKCWludCgmYXJyKVsyXVsyXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50KCYpWzJdWzJdPihhKTsKCXByaW50YXJyYXkoYXJyKTsKCglpbnQgYlsyXVsyXSA9IHt7IDEwLDIwIH0seyAzMCw0MCB9fTsKCWludCgmYnJyKVs0XSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50KCYpWzRdPihiKTsKCXByaW50YXJyYXkoYnJyKTsKCglyZXR1cm4gMDsKfQo=