Int array [10];
Int * P; // three equivalent representations
P = & array [0];
Or
Int * P = & array [0];
Or
Int * P = array;
It should be noted that learning C language is to learn how the C language compiler interprets C statements,
In addition, how to explain each sentence is not to combine the interpretation of one symbol and then constitute the interpretation of the entire sentence.
For example, int * P = & array [0];
In this case, the compiler defines a pointer P, and the pointer P points to the first address of the array,
Instead of defining a pointer P, P points to the address with the same content as the first data in the array.
* P = array [0]; indicates that the content pointed to by the P pointer is the same as the first data in the array.
There aren't many theoretical reasons to explain. Just remember.
There are many other definitions like this. All of them need to be remembered one by one, and then understand the meaning, and gradually master the C language.