#include <stdio.h>

void printSizes(int a[3][3], int (*p)[3])
{
  puts("when a and p passed to a function:");
  printf("sizeof a: %u\n", (unsigned)sizeof a);
  printf("sizeof p: %u\n", (unsigned)sizeof p);
}

int main()
{
  int a[3][3] = {{10,20,30},{40,50,60},{70,80,90}};
  int (*p)[3] = { a + 0, a + 1, a + 2 };
  printf("sizeof a: %u\n", (unsigned)sizeof a);
  printf("sizeof a[0]: %u\n", (unsigned)sizeof a[0]);
  printf("sizeof a[0][0]: %u\n", (unsigned)sizeof a[0][0]);
  printf("sizeof p: %u\n", (unsigned)sizeof p);
  printf("sizeof p[0]: %u\n", (unsigned)sizeof p[0]);
  printf("sizeof p[0][0]: %u\n", (unsigned)sizeof p[0][0]);
  printSizes(a, p);
  return 0;
}
