prof. Nunzio Brugaletta
C++: programmazione e oggetti

EnneBi - Programmazione
Avanti - Indietro - Inizio

Puntatori a strutture

Una struttura può occupare parecchio spazio in memoria centrale, in relazione alla quantità di membri contenuti nella struttura stessa e al tipo di membri. Ricorre spesso la necessità di usare puntatori a strutture: per esempio per passare ad una funzione una o più strutture. Utilizzando riferimenti invece di passare le strutture per valore si può ottenere una elaborazione più veloce: si evita, infatti, di ricopiare nelle variabili locali della funzione le strutture passate.

Tali necessità sono così frequenti che il linguaggio C++ mette a disposizione l’operatore -> (il trattino seguito dal simbolo di maggiore) per accedere ai membri della struttura.

Utilizzando l'allocazione dinamica della memoria, il programma di visualizzazione dei dati di un dipendente potrebbe diventare:

#include <iostream>
#include <string>
using namespace std;

namespace azienda{
struct dipendente{
string reparto;
string cognome;
string nome;
float stipendio;
};
}

main(){
azienda::dipendente *dip1; /*1*/ dip1 = new(azienda::dipendente); /*2*/ cout << "Esempio di uso di una struttura in C++" << endl; cout << “Inserire reparto in cui lavora il dipendente “; getline(cin,dip1->reparto); /*3*/ cout << "Inserire cognome dipendente "; getline(cin,dip1->cognome); /*3*/ cout << "Inserire nome "; getline(cin,dip1->nome); /*3*/ cout << "Inserire stipendio "; cin >> dip1->stipendio; /*3*/ cout << "Dati dipendente" << endl; cout << dip1->reparto << endl; /*3*/ cout << dip1->cognome << endl; /*3*/ cout << dip1->nome << endl; /*3*/ cout << dip1->stipendio << endl; /*3*/ }

Nella 1 viene definito dip1 come puntatore ad una variabile di tipo dipendente.

Nella 2 si richiede uno spazio di memoria tale da poter conservare una struttura del tipo specificato.

L'accesso ai membri, come evidenziato nelle 3, avviene utilizzando l'operatore -> invece dell'operatore punto.



Avanti - Indietro - Inizio

http://ennebi.solira.org
ennebi@solira.org