PDA

Visualizza la versione completa : [c++] inizializzazione e new(problema specifico)


unamarz
13-09-2002, 12:16
se io inizializzo un array (char *tmp[50]) in questo modo:

---
for (int t=0;t<50;t++) tmp[t]=NULL;
---

e poi assegno una stringa a tmp[e] in questo modo

---
tmp[e]=new char[strlen(tok)+1];
strcpy(tmp[e], tok);
---

dite che l'uso della new superfluo? il programma cos funziona, ma magari provoca qualche errore "collaterale".

:bh:

ChReAn
13-09-2002, 12:35
Solitamente la new si chiama prima di qualunque utilizzo della variabile da allocare.
Cmq dipende da come hai dichiarato l'array. Se hai dichiarato

char tmp[50];

la new non ti serve e puoi passare all'inizializzazione e utilizzo dell'array.

Se invece hai usato

char *tmp;

e' necessario l'utilizzo di new per allocare l'array (operazione da eseguire al posto del ciclo di inizializzazione).

Nel tuo esempio pero' non capisco perche' devi ciclare su tutto l'array. Per inizializzarlo a un valore nullo ti basterebbe:

tmp[0] = '\0';

oppure

*tmp = '\0';

Anche perche', da che so io, NULL si usa per i puntatori e non per i char.
:ciauz:

unamarz
13-09-2002, 12:44
un array bidimensionale (array di stringhe)

char *tmp[50]

per questo devo ciclare, e dare un indirizzo ad ogni stringa.
ma il new superfluo vero?
equivale a char tmp[][50] (o char tmp[50][]?)

Loading