#include <cstddef>
#include <iostream>
using namespace std;
template<size_t N, size_t M>
void printPtr(int (*A)[M][N] /* Also a reference could work */) {
for(int i=0; i < M; i++){
for(int j=0; j<N; j++) {
cout << (*A)[i][j] << " ";
}
cout << endl;
}
}
int main() {
int A[][3] = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
{ 10, 11, 12 }
};
int(*ptrA)[4][3] = &A; // Not a decayed type
printPtr(ptrA);
}
I2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHNpemVfdCBOLCBzaXplX3QgTT4Kdm9pZCBwcmludFB0cihpbnQgKCpBKVtNXVtOXSAvKiBBbHNvIGEgcmVmZXJlbmNlIGNvdWxkIHdvcmsgKi8pIHsKICAgZm9yKGludCBpPTA7IGkgPCBNOyBpKyspewogICAgICBmb3IoaW50IGo9MDsgajxOOyBqKyspIHsKICAgICAgICAgY291dCA8PCAoKkEpW2ldW2pdIDw8ICIgIjsKICAgICAgfQogICAgICBjb3V0IDw8IGVuZGw7CiAgIH0KfQoKaW50IG1haW4oKSB7CgogICAgaW50IEFbXVszXSA9IHsKCQkJeyAxLCAyLCAzIH0sCgkJCXsgNCwgNSwgNiB9LAoJCQl7IDcsIDgsIDkgfSwKCQkJeyAxMCwgMTEsIDEyIH0KCX07CiAgICAKCWludCgqcHRyQSlbNF1bM10gPSAmQTsgLy8gTm90IGEgZGVjYXllZCB0eXBlCglwcmludFB0cihwdHJBKTsKfQ==