A declares that it reads data starting from its name and then reads data in order of priority.
The priority of B is from high to low:
Section enclosed in brackets in B. 1 Declaration
B. 2 suffix OPERATOR:
Parentheses () indicate that this is a function, and
Square brackets [] indicate that this is an array
B .3 prefix OPERATOR: Model * indicates "pointer ".
C If the const and volatile keywords follow the type specifiers (such as int and long), it acts on the type specifiers. In other cases, the const and volatile keywords apply to the pointer asterisks next to it.
For example, int * a [2]: first, a is an array, and the content of the array is a pointer to the int.
Another example is char * (* c [10]) (int ** p): c is an array [0 .. 9]. Its element type is a function pointer. the return value of the function to which it points is a pointer to char, and the parameter of this function is a two-dimensional int pointer.