What is the interpretation of following C declaration:
char *(*(**foo[][8])())[];
(A) foo is array of 8 pointer to pointer to function returning pointer to array of pointer to char.
(B) foo is array of array of 8 pointer to pointer to function returning pointer to pointer to array of char.
(C) foo is array of array of 8 pointer to pointer to function returning pointer to array of pointer to char.
(D) None