Round 2: Fight! >_<
aps is a pointer to the first of 5 pointers to the initial characters of 5 strings
No.
Code:
char *aps[5] = {{"aps zero "}, {"aps one "}, {"aps two "}, {"aps three"}, {"aps four "}};
In that example code `aps' is an array of pointer to `char'.
Code:
void Go1(char ** faps); // `faps is a pointer to a location in memory which is a single pointer or an array of pointers
void Go2(char ** faps); // `faps is a pointer to a location in memory which is a single pointer or an array of pointers
// ...
Go1(aps); // `aps' is an array but decays into a pointer to a pointer
Go2(aps); // `aps' is an array but decays into a pointer to a pointer
some articles call aps a pointer to an array of pointers
They are wrong, or as with other examples you've quoted, you misunderstood that they are using meaningful but inaccurate descriptive language to explain something which may be unfamiliar to the target audience.
this would imply a second dereference is needed
Given your inability to understand this issue, I'm betting you also don't understand where the first "dereference" happens with a pointer to pointer or array or pointers.
Code:
char *aps[5] = {{"aps zero "}, {"aps one "}, {"aps two "}, {"aps three"}, {"aps four "}};
// ...
char * s = aps[0]; // `aps' is "dereferenced"
Soma