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", (void *)points); /* address of entire array */
printf("&points = %p\n", (void *)&points); /* address of entire array */
printf("points[0] = %p\n", (void *)points[0]); /* address of first row */
printf("&points[0] = %p\n", (void *)&points[0]); /* address of first row */
printf("*points = %p\n", (void *)*points); /* same as above */
printf("&points[0][0] = %p\n", (void *)&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) = %lu\n", sizeof(points)); /* sizeof entire array */
printf("sizeof(*points) = %lu\n", sizeof(*points)); /* sizeof of first row */
printf("sizeof(**points) = %lu\n", sizeof(**points)); /* sizeof first element */
printf("sizeof(points[0]) = %lu\n", sizeof(points[0])); /* sizeof first row */
printf("sizeof(points[0][0])=%lu\n", sizeof(points[0][0])); /* sizeof first element */
printf("sizeof(&points)=%lu\n", sizeof(&points)); /* sizeof a pointer */
}