codice:
	struct utente{
    const char *nome;
    const char* cognome;
    const char *telefono;       
};
int main(int arhc, char**argv)
{
    struct utente elenco;
    elenco.cognome="pippo";
}
 
Attenzione alla parola chiave const, perchè in questo caso se dici elenco.cognome="pippo", la stringa "pippo" verrà messa nell' area di sola lettura del programma.Per cui se accedi ai suoi campi come ad esempio:
	codice:
	// se cognome era char* e non const char*
elenco.cognome[1]='c';  // segmentation fault
 
Va in segmentation fault perchè la stringa è di sola lettura.
Dichiare const char* è quindi solo una forma di tutela.Non è strettamente necessario.
L' incompatibilità è dovuta al fatto che "pippo" è di tipo const char* e non di tipo char[20].
Se vuoi anche accedere in scrittura alle stringhe puoi usare la strcpy e dichiarare array di char:
	codice:
	// cognome è di tipo char[20]
strcpy(elenco.cognome,"pippo");