Una Struct (o meglio, un 'Record') è una struttura nella quale è possibile inserire dei dati. La differenza sostanziale con i Vettori (mono o bi-dimensionali) è che in questa struttura è possibile dichiarare variabili di diverso tipo, cosa che non era possibile fare con i Vettori. Ad esempio qui potrò scrivere:
struct Studente {
char nome[15];
char cognome[15];
float media_voti;
};
Nota: in questa struttura ho dichiarato dati sia di tipo
int che di tipo
float. In un vettore avrei potuto dichiarare solo una tipologia di dato, no?
int Vettore[100];
Una volta vista questa importante caratteristica, diciamo subito che possiamo vedere i record come vere e proprie tabelle che mantengono i dati (quando studierai i FILE vedrai che torneranno davvero utili). Bene, una volta definite delle tipologie dei nostri dati come possiamo accederci? O meglio: come possiamo inserirci dei dati? Per fare ciò, una volta dichiarata una struttura, bisognerà dichiarare una variabile del tipo del record. Nel caso precedente, dovremo scrivere:
struct Studente {
char nome[15];
char cognome[15];
float media_voti;
};
Studente accedi;
Ora la variabile
accedi, combinata con un
Dot Notation, potrà, appunto, accedere a qualunque campo del record. Vediamo un esempio. Chiediamo in input questa serie di dati (premettendo di aver dichiarato la struttura riportata sopra come struttura globale):
void funzione_input () {
cout <<"Inserisci il tuo nome."<<endl;
cin >> accedi.nome;
cout <<"Inserisci il tuo cognome."<<endl;
cin >> accedi.cognome;
cout <<"Inserisci la tua media generale."<<endl;
cin >> accedi.media_voti;
cout <<"Hai detto di essere "<<accedi.nome<<" "<<accedi.cognome<<" e di avere una media pari a: "<<accedi.media_voti<<endl;
return;
}
Quindi per accedere ad un campo bisognerà usare la seguente sintassi:
<tipo_record>.<nome_campo_record>;
E' anche possibile effettuare operazioni di assegnazione tra i campi di un record (nel C++). Notare il seguente esempio:
struct esempio {
int numero1;
int numero2;
int numero3;
};
esempio accedi;
int main () {
accedi.numero1 = 2;
accedi.numero2 = 2;
accedi.numero3 = accedi.numero2 + accedi.numero1;
cout <<accedi.numero3;
system ("Pause");
return 0;
}
Sostanzialmente ciò che c'è da sapere è questo. Ovviamente potrai anche creare array di record.
Spero di esserti stato utile. Ciao!