C Programming - Complicated Declarations

1.
Declare the following statement?
"An array of three pointers to chars".
char *ptr[3]();
char *ptr[3];
char (*ptr[3])();
char **ptr[3];
Answer: Option
Explanation:
No answer description is available. Let's discuss.

2.
What do the following declaration signify?
int *ptr[30];
ptr is a pointer to an array of 30 integer pointers.
ptr is a array of 30 pointers to integers.
ptr is a array of 30 integer pointers.
ptr is a array 30 pointers.
Answer: Option
Explanation:
No answer description is available. Let's discuss.

3.
Declare the following statement?
"A pointer to an array of three chars".
char *ptr[3]();
char (*ptr)*[3];
char (*ptr[3])();
char (*ptr)[3];
Answer: Option
Explanation:
No answer description is available. Let's discuss.

4.
What do the following declaration signify?
char *arr[10];
arr is a array of 10 character pointers.
arr is a array of function pointer.
arr is a array of characters.
arr is a pointer to array of characters.
Answer: Option
Explanation:
No answer description is available. Let's discuss.

5.
What do the following declaration signify?
int (*pf)();
pf is a pointer to function.
pf is a function pointer.
pf is a pointer to a function which return int
pf is a function of pointer variable.
Answer: Option
Explanation:
No answer description is available. Let's discuss.