Programmazione C · 3 min read · Nov 18, 2025
Linux C Programming Tutorial Parte 26 - Strutture e Funzioni

In uno dei nostri precedenti tutorial sulla riga di comando, abbiamo toccato il concetto di Strutture. Utilizzando esempi facili da comprendere, abbiamo discusso cose di base come cosa sono le strutture e perché sono necessarie. Espandendo su questo, in questo tutorial, discuteremo di come le strutture e le funzioni possono essere utilizzate insieme.
Strutture e Funzioni nel Linguaggio di Programmazione C
Prima di iniziare, rinfreschiamo rapidamente come viene dichiarata una struttura. Ecco un esempio:
struct emp_details {
int emp_code;
int emp_age;
};Quindi qui, la parola chiave struct - che è obbligatoria se stai definendo una struttura in C - segna l’inizio della dichiarazione. È seguita da un tag, o puoi dire il nome della struttura. Poi, all’interno delle parentesi, hai due variabili intere, che sono raggruppate insieme come parte di questa struttura.
Per utilizzare questa struttura, devi prima definire la sua istanza o oggetto. Puoi farlo nel seguente modo:
emp_details obj;E poi i membri della struttura possono essere accessibili nel seguente modo:
obj.emp_code
obj.emp_ageOra, venendo alle funzioni, una funzione può restituire strutture così come accettare strutture sotto forma di argomenti. Ecco un esempio:
#include
struct emp_details {
int emp_code;
int emp_age;
};
struct emp_details fill(int code, int age)
{
struct emp_details obj;
obj.emp_code = code;
obj.emp_age = age;
return obj;
}
int main()
{
int x,y;
printf("Inserisci il codice dell'impiegato: ");
scanf("%d", &x);
printf("\n Inserisci l'età dell'impiegato: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj = fill(x,y);
printf("\n Il codice dell'impiegato e l'età che hai inserito sono: %d e %d", new_obj.emp_code, new_obj.emp_age);
return 0;
} Quindi qui, in questo esempio, abbiamo una funzione ‘fill’ che accetta due interi, li tratta come codice e età, riempie una struttura basata su queste informazioni e restituisce la struttura per valore al chiamante della funzione.
Ora, come ho menzionato in precedenza in una dichiarazione sopra, le strutture possono anche essere passate come argomenti di funzione. Di seguito è riportato un esempio, in cui la funzione ‘fill’ accetta una struttura ‘emp_details’ come argomento.
#include
struct emp_details {
int emp_code;
int emp_age;
};
void fill(struct emp_details obj)
{
printf("\n Il codice dell'impiegato e l'età che hai inserito sono: %d e %d", obj.emp_code, obj.emp_age);
}
int main()
{
int x,y;
printf("Inserisci il codice dell'impiegato: ");
scanf("%d", &x);
printf("\n Inserisci l'età dell'impiegato: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj.emp_code = x;
new_obj.emp_age = y;
fill(new_obj);
return 0;
} Ecco l’output nel mio caso:
Inserisci il codice dell'impiegato: 36
Inserisci l'età dell'impiegato: 29
Il codice dell'impiegato e l'età che hai inserito sono: 36 e 29Procedendo, come le normali variabili, gli array e altro, ci possono essere puntatori a strutture. Ecco un esempio:
struct emp_details *ptr;Come sempre, i puntatori sono utili nel caso in cui la dimensione della struttura sia grande e la stai inviando come argomento a una funzione. Idealmente, ecco come puoi accedere alle variabili della struttura tramite oggetti puntatore:
(*ptr).emp_code
(*ptr).emp_ageMa per semplicità, C consente di omettere * e . e utilizzare ‘->’ invece. Di seguito è riportato un esempio:
ptr->emp_code
ptr->emp_age Ecco un esempio che utilizza un puntatore a struttura:
#include
struct emp_details {
int emp_code;
int emp_age;
};
void fill(struct emp_details *obj)
{
printf("\n Il codice dell'impiegato e l'età che hai inserito sono: %d e %d", obj->emp_code, obj->emp_age);
}
int main()
{
int x,y;
printf("Inserisci il codice dell'impiegato: ");
scanf("%d", &x);
printf("\n Inserisci l'età dell'impiegato: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj.emp_code = x;
new_obj.emp_age = y;
fill(&new_obj);
return 0;
} Sebbene questo sia lo stesso esempio che abbiamo usato in precedenza, le modifiche - poiché stiamo utilizzando ora un puntatore a struttura - sono evidenziate in grassetto.
Conclusione
In questo tutorial, abbiamo ampliato la nostra comprensione delle strutture discutendo di come funzioni e strutture possono essere utilizzate insieme. Ti incoraggio a provare gli esempi che abbiamo utilizzato qui sul tuo sistema locale. In caso di dubbi o domande, lascia un commento qui sotto.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.