Originariamente inviato da mgofficial
Nella dichiarazione dei prototipi delle funzioni, nel C, come devo fare per dichiarare una funzione che come argomento ha un array, i cui elementi sono a loro volta array di stringhe?
Quindi, per dirla in altri termini, una matrice bidimensionale di stringhe (puntatori a char), giusto?

Qui però bisogna stabilire se si vuole gestire un array bidimensionale come inteso dal C/C++ (ovvero elementi contigui in memoria) o un array bidimensionale basato su puntatori. Perché sono due strutturazioni diverse degli elementi.

Con array "classico":

codice:
void func (char *mat[2][2])
{
    ....
}

....
char *matrice[2][2] = { {"a","b"}, {"c","d"} };

func (matrice);
Con puntatori:

codice:
void func (char ***mat)
{
    ....
}

....
char *riga1[2] = { "a", "b" };
char *riga2[2] = { "c", "d" };
char **matrice[2];

matrice[0] = riga1;
matrice[1] = riga2;

func (matrice);