Strutture.

La struttura struct è un tipo di dati molto interessante: è una raccolta di variabili di diverso tipo, unite da un nome. In alcuni casi le strutture possono semplificare notevolmente la scrittura del codice, renderlo più logico e facilmente modificabile. Il tipo di dati della struttura è dichiarato come segue:
Sintassi
struct etichetta
     tipo_dati nome_variabile_1; 
     tipo_dati nome_variabile_2; 
     tipo_dati nome_variabile_3;
     ...
     ...
     tipo_dati nome_variabile_n;
};
L'etichetta sarà un nuovo tipo di dati e, utilizzando questa etichetta, puoi dichiarare direttamente la struttura stessa:
etichetta nome_struttura; // dichiara una struttura
etichetta nome_struttura_1, nome_struttura_2; // dichiara due strutture
etichetta nome_struttura[5]; // dichiara un array di strutture
Esiste anche una variante per dichiarare una struttura senza creare un'etichetta, ad es. creiamo una struttura senza dichiararla come tipo di dati con il proprio nome.
struct 
     tipo_dati nome_variabile_1; 
     tipo_dati nome_variabile_2; 
     tipo_dati nome_variabile_3;
}nome_struttura;

  • È possibile accedere a un membro della struttura in base al seguente schema: nome_struttura.nome_variabile e consente di modificare o leggere il valore.
  • Se due strutture hanno la stessa struttura (dichiarata dalla stessa etichetta), puoi semplicemente equiparare una struttura a un'altra, tutte le variabili verranno scritte di conseguenza al loro posto.
  • Un'altra opzione conveniente è assegnare un valore come questo: nome_struttura = (etichetta) {valore_della_variabile_1, valore_della_variabile_2, valore_della_variabile_3};
A cosa servono le strutture? La maggior parte degli esempi che mostra l'uso di strutture per memorizzare i dati degli indirizzi, ad es. creazione di un database di indirizzi: nome, cognome, numero di telefono, ecc. Nella mia pratica, le strutture si sono rivelate molto utili per creare menu con un gran numero di modalità e impostazioni. Le strutture sono molto comode da inviare e ricevere, ad esempio utilizzando moduli RF24, ad es. invece degli array, è più conveniente utilizzare strutture e passare un gruppo di tipi di dati in una riga alla volta. Inoltre l'intera struttura può essere scritta su EEPROM in una riga e letta da lì in una riga senza preoccuparsi dei numeri di cella, come nel caso della scrittura manuale dei dati.


Considera un esempio che mostra quanto sopra.

Dimensione dell'elemento nella struttura.

Le strutture consentono di fare una cosa molto interessante per l'ottimizzazione della memoria: specificare il peso massimo di un elemento in bit. In questo modo si possono creare anche flag di un bit (un normale bool / booleano occupa 8 bit di memoria). Questo viene fatto usando l'operatore due punti (:).

Allo stesso modo, puoi comprimere tipi di dati interi, ad esempio sappiamo che il valore di una variabile non supererà 50, possiamo dichiararlo all'interno della struttura come byte val: 6, che lo renderà a 6 bit in memoria . Per un piccolo insieme di variabili, questo non ha senso, ma se ce ne sono davvero molte, vale la pena inserirle in una struttura.

Strutture annidate.

Le strutture possono anche essere annidate l'una nell'altra, l'accesso all'elemento desiderato viene effettuato anche utilizzando l'operatore punto, vedere un semplice esempio:

Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia