Salve a tutti programmatori !!!
Mi sapreste dire a cosa serve questo "doppio" puntatore ?
**Ptr![]()
Salve a tutti programmatori !!!
Mi sapreste dire a cosa serve questo "doppio" puntatore ?
**Ptr![]()
I puntatori doppi sono semplicemente dei puntatori ad un altro puntatore. Sono usati più di rado dei puntatori semplici, ma hanno comunque una loro utilità. Uno dei loro scopi è consentire di modificare una variabile puntatore ad una funzione (=>consentire di cambiare oggetto a cui punta), un altro è per implementare array multidimensionali in termini di array di array.
Amaro C++, il gusto pieno dell'undefined behavior.
serve anche per implementare array di puntatori o array di stringhe
codice:char **arraystringhe; char ***matricestringhe; item_t **arraypuntatoriaitem_t;
Grazie mille....potrei avere qualche info in più sugli array multidimensionali ?Originariamente inviato da MItaly
I puntatori doppi sono semplicemente dei puntatori ad un altro puntatore. Sono usati più di rado dei puntatori semplici, ma hanno comunque una loro utilità. Uno dei loro scopi è consentire di modificare una variabile puntatore ad una funzione (=>consentire di cambiare oggetto a cui punta), un altro è per implementare array multidimensionali in termini di array di array.![]()
Originariamente inviato da Ghemon-a
Grazie mille....potrei avere qualche info in più sugli array multidimensionali ?![]()
Semplicemente, gli array sono insiemi di oggetti di un certo tipo, che possono essere caratteri, numeri interi, reali o, perchè no, a loro volta array! In questo modo, quasi in maniera ricorsiva, posso avere un array di array, in cui appunto ogni elemento è un array di array e andare avanti cosi all'infinito!
Posso ritrovarmi, ad esempio, con un elemento di questo tipo:
Diventa un po' complicato capire come si accede ad ogni singolo elemento (ossia come si calcola l'offset). Supponendo di avere una matrice (rappresentabile con un vettore bidimensionale), l'elemento alla i-esima riga e j-esima colonna si troverà in posizionecodice:int array [dim1][dim2][dim3]...[dimN];
(primo elemento della matrice) + (lunghezza delle righe) * i + j
Esempio, ho la matrice:
l'elemento alla i-esima riga e j-esima colonna sarà:codice:int mat [20][30];
codice:*(mat[0][0] + 30*i + j);
Salute a voi, da Laikius!
--> Faber est suae quisque fortunae <--
Dovresti trovare ulteriori informazioni in rete e sui libri sotto la voce: "Allocazione dinamica della memoria in C".
Gli array ed i puntatori hanno un rapporto stretto.
ragazzi...negli array multidimensionali come si alloca e dealloca? xD
codice:char ** ehi; ehi = new char * [100]: for(int i = 0; i < 100; i++) ehi[i] = new char [30]; //così in teoria ho 100 stringhe da 30 caratteri...ma per deallocarle?? //e sinceramente non sono sicuro che si faccia proprio così! delete [] ehi; ??? OPPURE for(int i = 0; i < 100; i++) delete ehi[i] []; delete [] ehi;
chiaritemi un po' le idee perpiacre![]()
Ci sono le funzioni malloc() per definire la grandezza dell'array dinamico e poi free() per libera la memoria.