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);