Arrays are simply named extents of memory. So the address of an array is the address of the extent it occupies. At the same time it is the address of the first element of the array because it occupies the initial part of the extent.
Thus you have:
this statement
printf("%x\n",myChr);
displays the address of the first element of the array because array name is implicitly converted to pointer to its first element;
this statement
printf("%x\n",&myChr);
displays the address of the array that is the same address as above because it is the address of the allocated extent;
this statement
printf("%x\n",*myChr);
displays the same address. Why? As I have already said the name of the array is implicitly converted to pointer to its first element. The element of the array is in turn a one-dimensional array. So in expression this one-dimensional array *myChr
(the first element of the original two-dimensional array) in turn is converted to pointer to its first element.
So in all three cases you display this address :)
&myChr[0][0]