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