1) Nothing, the value of an array is a pointer to it's first element. So *array == array[0]
2) Personal Preference
3) No
Note that this macro wont work if called inside a function where the array is passed as a parameter into the function. This is because the array object passed "decays" into a pointer rather than a deep copy.