1) Misconception :
Whenever an array is declared in C language, a pointer to the first element of the array is created (
The short answer is yes...except for sometimes. Usually after an array is declared, each time its name is used, it is converted to a pointer to the array object's first element. However there are some cases where this does not occur. These cases where this does not occur can be found in @KeithThompson's answer here.
Similarly to your array, a function type will also be converted to a pointer value...except for sometimes. The cases where this does not occur again can be found at @KeithThompson's answer again. here.