C/Enumerazioni, strutture e unioni/Strutture: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pietrodn (discussione | contributi)
Nessun oggetto della modifica
Pietrodn (discussione | contributi)
indicizzato
Riga 1:
{{Linguaggio C}}
 
{{IndexItem|strutture}}
Una '''struttura''' è un insieme di una o più [[w:variabile_(informatica)|variabili]].
 
Una '''struttura''' è un insieme di una o più {{IndexItem|variabili}}[[w:variabile_(informatica)|variabili]].
Le variabili possono essere di qualunque tipo e vengono raggrupate sotto un unico nome.
Questo raggrupamento viene effettuato quando occorrono più variabili che hanno qualcosa in comune, un esempio pratico può essere quello di uno studente universitario. Lo studente ha tre caratteristiche principali ({{IndexItem|strutture, membri}}''membri''): Nome, Cognome, Matricola. Sarebbe utile raggrupparle insieme, le strutture permettono appunto questo raggruppamento.
 
È possibile considerare la struttura come un vero e proprio tipo di dati creato dall'utente, un po' come le [[Linguaggio C/Enumerazioni, strutture e unioni/Enumerazioni|enumerazioni]].
 
== Sintassi ==
La dichiarazione di una struttura è fatta così:
{{IndexItem|struct}}
<pre>
struct Studente {
Line 18 ⟶ 21:
''Notate il ; (punto e virgola) finale: è necessario.''
 
Con questo codice, notare che non ho ancora creato alcuna variabile di tipo <code>Studente</code>.
 
== Esempi d'uso ==
Dopo una dichiarazione del genere, in qualunque momento può essere dichiarata una variabile in questo modo:
<pre>
struct Studente var1;
</pre>
 
Adesso <tt>var1</tt> è una struttura con tre elementimembri: nome e cognome, stringhe di 25 caratteri, e matricola, la matricola dello studente.
 
Per modificare o leggere questii valorimembri si usa l'{{IndexItem|operatore punto}}operatore . ''(punto)'' in questo modo:
<pre>
scanf("%s", var1.nome);
Line 38 ⟶ 41:
----
 
È possibile crearedichiarare variabili anche al momento della definizione della struttura:
 
<pre>
Line 50 ⟶ 53:
In questo caso, ho definito una struttura <code>Studente</code> e ho anche dichiarato una variabile di tale tipo.
 
=={{IndexItem|puntatori a strutture}}{{IndexItem|strutture, puntatori a}}Puntatori a strutture==
È possibile dichiarare anche [[Linguaggio C/Vettori e puntatori/Puntatori|puntatori]] a strutture.
 
Line 72 ⟶ 75:
Il nome dello studente è: Massimiliano
 
Il puntatore <tt>punt</tt> punta alla variabile <tt>pippo</tt>; per accedere dal puntatore ad un membro della struttura da esso puntata si usa l'{{IndexItem|operatore freccia}}operatore <tt>-></tt> (freccia).
 
Il programma avrebbe funzionato anche così:
Line 78 ⟶ 81:
strcpy((*punt).nome, "Massimiliano");
 
Ma l'operatore freccia è indubbiamente più comodo da usare.
 
La funzione {{IndexItem|strcpy}}<tt>strcpy</tt>, appartenente alla libreria C standard, permette di copiare la stringa rappresentata dal secondo argomento nella stringa rappresentata dal primo argomento.
 
== {{IndexItem|campi bit}}Campi bit ==
In C, con i campi bit, è possibile accedere ai singoli bit dei dati. I campi bit sono utili in molte occasioni, tipo quando si vogliono rappresentare una serie di variabili booleane.