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

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Pietrodn (discussione | contributi)
+sintassi colorata
Riga 12:
La dichiarazione di una struttura è:
{{IndexItem|struct}}
<source lang="c">
<pre>
struct Studente {
char nome[25];
Riga 18:
int matricola;
};
</presource>
''Notate il ; (punto e virgola) finale: è necessario.''
 
Riga 25:
== Esempi d'uso ==
Dopo una dichiarazione del genere, in qualunque momento può essere dichiarata una variabile in questo modo:
<source lang="c">
<pre>
struct Studente var1;
</presource>
 
Adesso <tt>var1</tt> è una struttura con tre membri: nome e cognome, stringhe di 25 caratteri, e matricola, la matricola dello studente.
 
Per modificare o leggere i membri si usa l'{{IndexItem|operatore punto}}operatore . ''(punto)'' in questo modo:
<source lang="c">
<pre>
scanf("%s", var1.nome);
scanf("%s", var1.cognome);
var1.matricola = 12345;
altra_matricola = var1.matricola; /* altra_matricola è uguale a 12345 */
</presource>
 
----
Riga 43:
È possibile dichiarare variabili anche al momento della definizione della struttura:
 
<source lang="c">
<pre>
struct Studente {
char nome[25],
Riga 49:
int matricola;
} pippo;
</presource>
 
In questo caso, ho definito una struttura <code>Studente</code> e ho anche dichiarato una variabile di tale tipo.
Riga 56:
È possibile dichiarare anche [[Linguaggio C/Vettori e puntatori/Puntatori|puntatori]] a strutture.
 
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
Line 71 ⟶ 72:
return 0;
}
</source>
 
L'output sarà:
Line 79 ⟶ 81:
Il programma avrebbe funzionato anche così:
 
<source lang="c">
strcpy((*punt).nome, "Massimiliano");
</source>
 
Ma l'operatore freccia è più comodo da usare.
Line 90 ⟶ 94:
Sintassi:
 
<source lang="c">
struct lamiastruttura
{
Line 96 ⟶ 101:
...
tipo membroN : numerodibit;
} il miocampobitilmiocampobit;
</source>
 
Esempio:
 
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
Line 115 ⟶ 122:
return 0;
}
</source>
 
In questo caso, si sono usati solo 2 bit per memorizzare i valori mammifero e oviparo.
Line 123 ⟶ 131:
Una limitazione delle strutture è la seguente: una struttura non può contenere se stessa.
Non è possibile insomma avere una cosa del genere:
<source lang="c">
<pre>
struct Elemento {
int Campo1;
struct Elemento Campo2;
};
</presource>
 
L'ostacolo può essere però raggirato includendo nella struttura un puntatore allo stesso tipo struttura ed usando gli operatori <tt>*</tt> o <tt>-></tt> per accedere ai membri:
<source lang="c">
<pre>
struct Elemento {
int Campo1;
struct Elemento *Campo2;
};
</presource>
 
Questa tecnica viene utilizzare per creare diverse strutture dati molto flessibili e utili.