Le Struct in Linguaggio C

Le struct in linguaggio C

Cosa sono le Struct ? Sono modelli di strutture dati definite dall’utente in relazione alla rappresentazione dati che occorre nel problema; nel linguaggi di programmazione di qualunque tipo sono sempre ammessi come tipologia di struttura dati. 
E’ definita una struttura dati eterogenea in quanto può essere composta da tipi di dati semplici o strutturati come ad esempio un array. 
Per poter utilizzare tale strutture l’utente deve dichiarare nel programma la struct con la dichiarazione:

struct nome struttura

{  tuoi1 nome dato;

  tipo 2 nome dato 2;

  …..

 tipo n nome dato n;

};

ad esempio

struct alunno {char nome[20];

 char cognome[20];
 char classe[4];
 char sezione[2];
 int age;
 float media_voti;
};

In questo caso è dichiarata una struttura dati contenente tipi di dati diversi definiti dall’utente in relazione al suo problema. Tale dichiarazione, va effettuata prima che il programmatore definisca delle variabili statiche o dinamiche legate all’uso del nuovo modello dati. 
Infatti, fintantoché la struttura non è dichiarata come variabile non è utilizzabile all’interno del programma e di suoi eventuali sotto programmi. 
La dichiarazione avviene in modo generico con la dichiarazione tipica:

struct nome struttura nome variabile;

oppure se è necessario dichiarare un array di strutture è possibile utilizzare la sintassi:

struct nome struttura nome variabile[dimensione];

In entrambi i casi le variabili dichiarate sono statiche e non dinamiche (non si è fatto uso dei puntatori).

la clausola typedef

Una variante della dichiarazione, può essere ottenuta con la clausola typedef, la quale dichiara il nuovo tipo con un alias della struttura; in questo modo l’utente non è costretto a dichiarare la parola chiave struct quando dichiara la variabile di quel modello dati. 
Ad esempio la dichiarazione della struttura di esempio diventa:

typedef struct{

 char nome[20];
 char cognome[20];
 char classe[4];
 char sezione[2];
 int age;
 float media_voti;
}  alunno ;

In questo modo, l’utente dichiara la sua variabile indicando direttamente il nome della struttura come nuovo tipo. Ad esempio:

alunno a;

alunno a[100];

la prima dichiara una variabile di tipo alunno e la seconda un array composto da tante strutture alunno dello stesso tipo. 

Uso e accesso ai dati delle strutture

Per prima cosa, una volata dichiarate le strutture e le relative variabili associate con essa, il programmatore per accedere ai dati detti anche “campi” utilizza la seguente sintassi:

nome_variabile.campo

per assegnare un valore al campo è possibile utilizzare ad esempio la sintassi seguente:

alunno.cognome[]=”rossi”; 

o

alunno.cognome={‘r’,’o’,’s’,’s’,’i’,};

E’ utile notare che nel momento in cui è opportuno definire delle stringhe; ogni stringa termina con un carattere di terminazione ‘\0’, il quale si aggiunge come numero ai caratteri della stringa. In altre parole se il cognome è “rossi” la stringa avrà 6 caratteri e non 5 in quanto la memorizzazione avverrà nella seguente forma “rossi\0”.

Se in blocco si vuole assengare a tutti i campi della struttura un valore è possibile utilizzare la sintesssi:

nome variabile={valore1, valore2, …,valoren);

attribuendo i valori nei formati opportuni; nel senso che se è un numero non sono necessari le veirgolette, se trattasi di una stringa invece le virgolette sono necessarie. 


 Uso delle strutture

Le strutture possono essere definite anche come record ovvero  “registrazione”, la cui parola indica un aggregato di dati composto da dati di tipo diverso ognuno dei quali è caratterizzato da una dimensione. 
I dati che compongono la struttura detti “campi” concorrono insieme alla definizione di un informazione. 
Tali informazioni, possono a loro volta essere aggregati in array di record dette tabelle che ben si prestano alla memorizzazione in memoria RAM oppure su memoria di massa sotto forma di file di record. 

Esercizio

Per continuare a leggere questo articolo devi sottoscrivere un abbonamento
Puoi abbonarti al link al menù principale o cliccando sul link Abbonati Ora!