An array with 10 pointers: * a [10];
The pointer points to a function: (* a [10]) ();
This function has an integer parameter: (* a [10]) (int);
So int (*a[ 10])(int) is the answer.
When reading this expression, you can follow the following rules: from right to left, from near to far, parentheses take precedence; For example, start with the symbol a. On the right is [10], which means that A is an array with ten elements.
Look at the one with an * on the left of A. This means that there are pointers in the array. Now (*a[ 10]) is (int) on the right; This means that the stored pointer points to a function with an int parameter. Now, there is an int to the left of (*a[ 10]), which means that the return value of the pointed function is of type int.
Extended data
Every element in the pointer array is a pointer, that is, there is a pointer in the form of "ptr_array[i]". Since all array elements are pointers, ptr_array[i] refers to the pointer of the i+ 1 th element. Pointer arrays can be used as parameters of functions just like ordinary arrays. Pointer arrays are often suitable for pointing to several strings, which makes string processing more flexible and convenient.
Pointer arrays are usually used to process two-dimensional arrays. Pointer variables pointing to one-dimensional arrays are also very convenient for dealing with two-dimensional arrays.
When the array pointer and pointer array handle the same two-dimensional array, the number of elements of the array pointer is different from the array length of the pointer array, and the number of elements of the array pointer is the same as the column length of the two-dimensional array. The array length of the pointer array is the same as the row length of the two-dimensional array.
When dealing with strings, it is much more convenient to use pointer arrays than array pointers. Because multi-string processing is more convenient than using two-dimensional character array, it saves more memory space.