Record (informatica)
# Record (informatica)

In informatica, un record (noto anche come struttura) è un tipo di dato strutturato che comprende diversi elementi (detti campi o membri) di tipo eterogeneo. A differenza degli array, nei record il numero di campi è usualmente stabilito nella definizione del tipo e i campi hanno un nome. I record sono impiegati tipicamente nell'implementazione delle strutture dati.

Nei linguaggi di programmazione orientata agli oggetti, un oggetto è un record esteso grazie all'aggiunta di procedure e funzioni atte a manipolare i dati in esso immagazzinati; molti linguaggi OOP conservano comunque i tipi record (che spesso sono implementati come casi particolari di oggetti, ad esempio in C++), per questioni di retrocompatibilità o per consentire l'implementazione di strutture plain old data (POD).

## Esempi massimini

### Ada

In Ada i record vengono dichiarati con la keyword record, seguita da un elenco separato da punto e virgola dei nomi dei campi, per i quali viene specificato il tipo e facoltativamente un valore predefinito di inizializzazione. Le variabili di tipo strutturato possono essere inizializzate con una comprehension, e si accede ai campi con l'operatore punto.

### C

In C i record vengono chiamati strutture (struct) e vengono dichiarati con la keyword struct, seguita da un elenco tra parentesi graffe dei nomi dei campi preceduti dal tipo e separati da punto e virgola (analogamente a delle dichiarazioni di variabili). L'inserimento del nome del tipo (nel caso dell'esempio, Libro) è facoltativo e se si omette il tipo viene dichiarato anonimamente. Tra la graffa chiusa e il punto e virgola possono essere inseriti gli identificatori di variabili dichiarate con quel tipo. Se il tipo non è anonimo vi si può fare riferimento in seguito (ad esempio nelle dichiarazioni) includendo la keyword struct. L'inizializzazione avviene con un letterale composto, i cui elementi seguono l'ordine della dichiarazione. Si accede ai campi con l'operatore punto, o con l'operatore freccia nel caso di un puntatore a variabile di tipo struct (->).

### C++

In C++ i record ereditano la sintassi del C estendendola, per cui le struct di un programma C generalmente sono valide anche in C++ ma non è valido in generale il contrario. Nelle struct C++ è infatti possibile utilizzare gli stessi membri di una classe, come costruttori e metodi, e la differenza rispetto al costrutto class è nel fatto che per i membri di una classe il modificatore di accesso predefinito è private, mentre nelle struct è public.

