I am using g++.  I am using code that had a main(int,char**), renamed so I can call it.  I looked at Should I use char** argv or char* argv[] in C?, where char** is said to be equivalent to char* [].  This does not appear to be true in c++ function calls.  For example:
void f1(char** p){;}
void f2(char* p[]){
   f1(p);
 //...`
}
fails with the compiler complaining "cannot convert char (*)[] to char**..."  The references I look to say that arrays are converted to pointers for the call, but this does not seem to be the case as:
void f3(char* [] p);
char caa[16][16];  
f3(caa);
also fails.   I had assumed that as long as the levels of indirection were the same (e.g. char*** ptr and char[][][] carray ) the types were interchangeable.
Can someone provide a reference I can review that clarifies these issues?
Thanks.
 
     
     
    