PDA

Visualizza la versione completa : [C++]: Chiarimenti su allocazione e operatore "->"


dybart
24-05-2006, 11:13
Salve a tutti potreste spiegarmi il significato delle righe chesto a elencarvi, sar banale ma essendo alle prime armi con il c++ non riesco a capire cosa intendono...


p = ( Nodo *) malloc (sizeof (Nodo));

Nodo una struttura creata in precedenza mentre p una variabile di tipo nodo...

E... potreste dirmi anche cosa si intende quando si ha un passaggio con l'operatore '->'
Grazie per l'attenzione spero di non essere statoi troppo banale...

newbie
24-05-2006, 17:10
Originariamente inviato da dybart
Salve a tutti potreste spiegarmi il significato delle righe chesto a elencarvi, sar banale ma essendo alle prime armi con il c++ non riesco a capire cosa intendono...



Nodo una struttura creata in precedenza mentre p una variabile di tipo nodo...

E... potreste dirmi anche cosa si intende quando si ha un passaggio con l'operatore '->'
Grazie per l'attenzione spero di non essere statoi troppo banale...

Semplicemente alloca un'area di memoria grande quanto un nodo e ne restituisce il puntatore. La sizeof serve a sapere quanti byte occupa un nodo, mentre il cast (Nodo *) serve perch la malloc restituisce un puntatore a un oggetto generico (di tipo void * e non Nodo *), mentre p un puntatore a un nodo e non a un'area generica di memoria.

L'operatore freccia -> serve quando devi riferirti a un campo di un oggetto, o una struttura, di cui hai il puntatore:


struct Punto1
{
int x, y; //x e y sono dei numeri interi
}

struct Punto2
{
int *x;
int *y; //in questo caso x e y non contengono due numeri, ma due indirizzi di numeri
}

//supponendo di avere P di tipo Punto1 e PP di tipo Punto2
//se k un intero, per assegnargli il valore della x si usa
k = P.x //nel primo caso (x una variabile)
k = PP->x; //nell'altro caso un puntatore: in questo modo accedi al valore

dybart
30-05-2006, 10:47
Leggo solo ora la tua risposta... grazie 1000 mi tutto chiaro!

newbie
01-06-2006, 12:03
Preghe! :D

Loading