The easiest thing to do is to redefine your function to accept a 2D array, not a pointer to a pointer.
Examples
Code:
#include <stdio.h>
void foo ( char **p ) {
int i;
for ( i = 0 ; i < 10 ; i++ ) {
printf( "%s\n", p[i] );
}
}
void bar ( char p[][5] ) {
int i;
for ( i = 0 ; i < 10 ; i++ ) {
printf( "%s\n", p[i] );
}
}
int main ( ) {
char test[][5] = {
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"
};
char *p[10];
int i;
for ( i = 0 ; i < 10 ; i++ ) p[i] = test[i]; // convert from [][] to **
foo( p );
bar ( test );
// foo( test ); // this is a no-no
return 0;
}