gyborg
21-09-2004, 15:40
Ciao!
Dunque, io non riesco a capire i doppi puntatori a char. Vorrei fare un array di stringhe in pratica, e inserirle da tastiera con un gets( *(testo+i) ) ma non riesco a capire xchè il codice seguente non funziona:
char **pp;
pp = new char*[100]; // oppure
// pp = (char**)(new char [5][100]);
Non funziona nel senso che il programma causa una violazione di accesso, un errore di segmentazione. Dunque, questo errore si verifica o quando si usa un puntatore al quale non si è ancora assegnato un indirizzo di memoria valido, o quando si va oltre i limiti dell'array e si scrive su dati vitali x il programma o il so... ma il mio new non dovrebbe allocare la quantità di memoria giusta x una struttura siffatta?
Poi che differenza c'è alla fin fine fra usare come array di stringhe un:
char**
char*[]
char[][]
char*[][]
???
Grazie amici!
Dunque, io non riesco a capire i doppi puntatori a char. Vorrei fare un array di stringhe in pratica, e inserirle da tastiera con un gets( *(testo+i) ) ma non riesco a capire xchè il codice seguente non funziona:
char **pp;
pp = new char*[100]; // oppure
// pp = (char**)(new char [5][100]);
Non funziona nel senso che il programma causa una violazione di accesso, un errore di segmentazione. Dunque, questo errore si verifica o quando si usa un puntatore al quale non si è ancora assegnato un indirizzo di memoria valido, o quando si va oltre i limiti dell'array e si scrive su dati vitali x il programma o il so... ma il mio new non dovrebbe allocare la quantità di memoria giusta x una struttura siffatta?
Poi che differenza c'è alla fin fine fra usare come array di stringhe un:
char**
char*[]
char[][]
char*[][]
???
Grazie amici!