Originariamente inviato da Lucked
mi fregano sempre questi puntatori...
..però come si spiega che se passo da una funzione la mia dichiarazione precedente funziona?

codice:
#include <stdio.h>

int main()
{
  char *messaggi[] ={
  "Ciao Luca!",
  "Ciao Angela!",
  "Ciao Nadia!",
  "Ciao Daniela!",
  NULL
  };

  stampa(messaggi);
  getch();
  return 0;
}

stampa(char *p[])
{
while(*p) printf("%s", *p++) ;
}
è una cosa diversa qui passi ad una funzione un array(o meglio una stringa xchè si tratta di char) in cui ogni elemento è a sua volta un'altra stringa e gli dici di stampare ogni elemento.

Mentre nell'esempip di sopra vuoi far puntare un nuovo array(p) alla locazione di memoria dove già c'è messaggi...ma come ti hanno speigato sopra di un array puoi modificare i singoli elementi ma non la memoria alla quale punta:ecco xchè ti serve **(puntatore di puntatore)

ciao