#include <stdio.h>
int x[3][5] =
{
{ 1, 2, 3, 4, 5 },
{ 6, 7, 8, 9, 10 },
{ 11, 12, 13, 14, 15 }
};
int (*pArr35)[3][5] = &x;
// &x is a pointer to an array of 3 arrays of 5 ints.
int (*pArr5a)[5] = x;
// x decays from an array of arrays of 5 ints to
// a pointer to an array of 5 ints,
// x is a pointer to an array of 5 ints.
int (*pArr5b)[5] = &x[0];
// &x[0] is a pointer to 0th element of x,
// x[0] is an array of 5 ints,
// &x[0] is a pointer to an array of 5 ints.
int *pInta = x[0];
// x[0] is 0th element of x,
// x[0] is an array of 5 ints,
// x[0] decays from an array of 5 ints to
// a pointer to an int.
int *pIntb = *x;
// x decays from an array of arrays of 5 ints to
// a pointer to an array of 5 ints,
// x is a pointer to an array of 5 ints,
// *x is an array of 5 ints,
// *x decays from an array of 5 ints to
// a pointer to an int.
int *pIntc = &x[0][0];
// x[0][0] is 0th element of x[0],
// where x[0] is an array of 5 ints,
// x[0][0] is an int,
// &x[0][0] is a pointer to an int.
int main(void)
{
printf("&x=%p x=%p &x[0]=%p x[0]=%p *x=%p &x[0][0]=%p\n", pArr35, pArr5a, pArr5b, pInta, pIntb, pIntc);
return 0;
}
ICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgCiAgICBpbnQgeFszXVs1XSA9CiAgICB7CiAgICAgIHsgIDEsICAyLCAgMywgIDQsICA1IH0sCiAgICAgIHsgIDYsICA3LCAgOCwgIDksIDEwIH0sCiAgICAgIHsgMTEsIDEyLCAxMywgMTQsIDE1IH0KICAgIH07CiAgICAKICAgIGludCAoKnBBcnIzNSlbM11bNV0gPSAmeDsKICAgIC8vICZ4IGlzIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiAzIGFycmF5cyBvZiA1IGludHMuCiAgICAKICAgIGludCAoKnBBcnI1YSlbNV0gPSB4OwogICAgLy8geCBkZWNheXMgZnJvbSBhbiBhcnJheSBvZiBhcnJheXMgb2YgNSBpbnRzIHRvCiAgICAvLyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgNSBpbnRzLAogICAgLy8geCBpcyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgNSBpbnRzLgogICAgCiAgICBpbnQgKCpwQXJyNWIpWzVdID0gJnhbMF07CiAgICAvLyAmeFswXSBpcyBhIHBvaW50ZXIgdG8gMHRoIGVsZW1lbnQgb2YgeCwKICAgIC8vIHhbMF0gaXMgYW4gYXJyYXkgb2YgNSBpbnRzLAogICAgLy8gJnhbMF0gaXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIDUgaW50cy4KICAgIAogICAgaW50ICpwSW50YSA9IHhbMF07CiAgICAvLyB4WzBdIGlzIDB0aCBlbGVtZW50IG9mIHgsCiAgICAvLyB4WzBdIGlzIGFuIGFycmF5IG9mIDUgaW50cywKICAgIC8vIHhbMF0gZGVjYXlzIGZyb20gYW4gYXJyYXkgb2YgNSBpbnRzIHRvCiAgICAvLyBhIHBvaW50ZXIgdG8gYW4gaW50LgogICAgCiAgICBpbnQgKnBJbnRiID0gKng7CiAgICAvLyB4IGRlY2F5cyBmcm9tIGFuIGFycmF5IG9mIGFycmF5cyBvZiA1IGludHMgdG8KICAgIC8vIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiA1IGludHMsCiAgICAvLyB4IGlzIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiA1IGludHMsCiAgICAvLyAqeCBpcyBhbiBhcnJheSBvZiA1IGludHMsCiAgICAvLyAqeCBkZWNheXMgZnJvbSBhbiBhcnJheSBvZiA1IGludHMgdG8KICAgIC8vIGEgcG9pbnRlciB0byBhbiBpbnQuCiAgICAKICAgIGludCAqcEludGMgPSAmeFswXVswXTsKICAgIC8vIHhbMF1bMF0gaXMgMHRoIGVsZW1lbnQgb2YgeFswXSwKICAgIC8vIHdoZXJlIHhbMF0gaXMgYW4gYXJyYXkgb2YgNSBpbnRzLAogICAgLy8geFswXVswXSBpcyBhbiBpbnQsCiAgICAvLyAmeFswXVswXSBpcyBhIHBvaW50ZXIgdG8gYW4gaW50LgogICAgCiAgICBpbnQgbWFpbih2b2lkKQogICAgewogICAgICBwcmludGYoIiZ4PSVwIHg9JXAgJnhbMF09JXAgeFswXT0lcCAqeD0lcCAmeFswXVswXT0lcFxuIiwKICAgICAgICAgICAgIHBBcnIzNSwgcEFycjVhLCBwQXJyNWIsIHBJbnRhLCBwSW50YiwgcEludGMpOwogICAgCiAgICAgIHJldHVybiAwOwogICAgfQo=