void Test2DArray1(void)
{
  double points[3][4] = { {1.0,  2.0,  3.0,  4.0}, 
                          {5.0,  6.0,  7.0,  8.0}, 
                          {9.0, 10.0, 11.0, 12.0}};           

  printf("points = %p\n", points);               // address of entire array
  printf("&points[0] = %p\n", points[0]);        // address of first row
  printf(*points = %p\n", *points);              //   same as above
  printf("&points[0][0] = %p\n", &points[0][0]); // address of first double
  printf("\n");
  printf("**points = %f\n", **points);           // first double
  printf("*points[0] = %f\n", *points[0]);       // first double
  printf("points[0][0]=%f\n", points[0][0]);     // first double
  printf("\n");
  printf("sizeof(points) = %i\n", sizeof(points));           // sizeof entire array
  printf("sizeof(*points) = %i\n", sizeof(*points));         // sizeof of first row
  printf("sizeof(**points) = %i\n", sizeof(**points));       // sizeof first element
  printf("sizeof(points[0]) = %i\n", sizeof(points[0]));     // sizeof first row
  printf("sizeof(points[0][0])=%i\n", sizeof(points[0][0])); // sizeof first element
}