PDA

Visualizza la versione completa : [C++] I puntatori: vantaggi nel loro utilizzo


Pacio88
11-12-2007, 20:27
Sono diverse settimane da quando ho iniziato a studiare il c++ e adesso mi sono imbattuto nei puntatori. Scusate la mia ignoranza ma non riesco a intuire quale sia il guadagno dell'uso di questi ultimi; l'unico vantaggio che ho notato è nella gestione delle stringhe. Grazie anticipatamente per le eventuali delucidazioni.

MacApp
11-12-2007, 20:52
Passaggio per indirizzo;
Allocazione dinamica;

Pacio88
11-12-2007, 20:55
Scusami potresti spiegarmi i vantaggi di queste due potenzialità?GRAZIE

MItaly
11-12-2007, 21:15
Il passaggio per indirizzo consente di passare a delle funzioni dei parametri non come una copia delle variabili passate, ma come un riferimento ad esse; in questa maniera la funzione può modificare i parametri, senza contare che il passaggio per riferimento, specie quando i parametri sono grosse strutture, può velocizzare la chiamata alla funzione e far risparmiare memoria.

Sullo stack è possibile allocare solo quantità di memoria determinate a compile-time; questo significa che (in linea di massima) se la dimensione di un buffer è nota solo a runtime non puoi allocarlo "normalmente" sullo stack. L'allocazione dinamica invece consente di allocare una quantità di memoria arbitraria (sempre ovviamente nei limiti della memoria - fisica o virtuale che sia - disponibile) definita a runtime.

I puntatori comunque hanno anche diversi altri utilizzi, ad esempio quelli relativi agli array.
... ma non dimentichiamoci dei puntatori a funzione... :sbav:

LeleFT
12-12-2007, 08:25
Il linguaggio va specificato obbligatoriamente anche nel titolo, come prevede il Regolamento.

L'ho aggiunto io.


Ciao. :ciauz:

matteodavi
13-12-2007, 23:14
Il vantaggio dei puntatori è quello di non dover allocare memoria "inutile" ad esempio quando si passa un vettore ad una funzione è consigliato passare il puntatore al primo elemento del vettore anzichè tutto il vettore, quest'ultima opzione andrebbe a creare un altro vettore "locale" all'interno della funzione e quindi memoria in più...

Lo svantaggio dell'utilizzo dei puntatori credo sia il fatto di dover essere molto decisi su dove e come operare..i puntatori agiscono sulla memoria ed è quindi d'obbligo fare con cautela :nonono:

Paulin
14-12-2007, 07:30
Lo svantaggio dell'utilizzo dei puntatori credo sia il fatto di dover essere molto decisi su dove e come operare..i puntatori agiscono sulla memoria ed è quindi d'obbligo fare con cautela :nonono:
Visto che si parla di C++, è il caso di ricordare che è buona norma di programmazione utilizzare i refernce al posto dei puntatori, soprattutto per il passaggio di variabili a funzioni, e limitare l'utilizzo dei puntatori solo dove non se ne può fare a meno.
Questo facilita un codice più leggibile e soprattutto più sicuro. Altra buona norma è quella di proteggere con const sia i puntatori che i riferimenti.
Tuttavia anche i reference non sono immuini da inconvenienti, bisognerà ricordare di non utilizzarli con oggetti che possono assumere valore NULL, dunque non con oggetti locali e nemmeno con oggetti che possono andare fuori portata (out o scope).

Loading