Ciao,
premetto che non sono del tutto sicuro che il codice che ti posto sia corretto, quindi prendilo con il beneficio del dubbio e insieme aspettiamo conferme dagli utenti più esperti.
Comunque dovrebbe funzionare:
codice:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char **str = (char **) malloc(3*sizeof(char *)); // alloco un array di stringhe
str[0] = (char *) malloc(10*sizeof(char)); // alloco una stringa di 10 caratteri
str[0][0]='p'; // inserisco i caratteri della stringa
str[0][1]='i';
str[0][2]='p';
str[0][3]='p';
str[0][4]='o';
str[0][5]='\0'; // il terminatore della stringa
printf("%s\n", str[0]); // stampo la stringa passando il primo puntatore dell'array di puntatori
return 0;
}