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

Contenuto cancellato Contenuto aggiunto
Pietrodn (discussione | contributi)
Alcune aggiunte
Pietrodn (discussione | contributi)
Nessun oggetto della modifica
Riga 7:
È 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ì:
<pre>
struct Studente {
char nome[25],
char cognome[25];
int matricola;
};
Riga 20:
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>
Riga 50:
In questo caso, ho definito una struttura <code>Studente</code> e ho anche dichiarato una variabile di tale tipo.
 
== Puntatori a strutture==
==Altri utilizzi==
È possibile dichiarare anche [[Linguaggio C/Vettori e puntatori/Puntatori|puntatori]] a strutture.
 
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
struct Studente {
char nome[25];
char cognome[25];
int matricola;
} pippo, *punt;
punt = &pippo;
strcpy(punt->nome, "Massimiliano");
printf("Il nome dello studente è: %s", pippo.nome);
return 0;
}
 
L'output sarà:
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'operatore <tt>-></tt>.
 
== Altri utilizzi ==
Una limitazione delle strutture è la seguente: una struttura non può contenere se stessa.
Non è possibile insomma avere una cosa del genere:
Line 60 ⟶ 84:
</pre>
 
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:
<pre>
struct Elemento {
Line 68 ⟶ 92:
</pre>
 
Questa tecnica viene utilizzare per creare diverse strutture dati molto flessibili e utili. Possono essere utili alcuni collegamenti:
 
== Pagine correlate ==
*[[wikipedia:Linked list|Linked list]]
*[[w:Albero (informatica)|Alberi]]