C/Enumerazioni, strutture e unioni/Strutture: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
+sintassi colorata |
||
Riga 12:
La dichiarazione di una struttura è:
{{IndexItem|struct}}
<source lang="c">
struct Studente {
char nome[25];
Riga 18:
int matricola;
};
</
''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">
struct Studente var1;
</
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">
scanf("%s", var1.nome);
scanf("%s", var1.cognome);
var1.matricola = 12345;
altra_matricola = var1.matricola; /* altra_matricola è uguale a 12345 */
</
----
Riga 43:
È possibile dichiarare variabili anche al momento della definizione della struttura:
<source lang="c">
struct Studente {
char nome[25],
Riga 49:
int matricola;
} pippo;
</
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;
}
</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">
struct Elemento {
int Campo1;
struct Elemento Campo2;
};
</
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">
struct Elemento {
int Campo1;
struct Elemento *Campo2;
};
</
Questa tecnica viene utilizzare per creare diverse strutture dati molto flessibili e utili.
|