La keyword typedef in C

Il typedef è una delle keyword riservate all’interno del linguaggio C, che permette di definire degli alias per altri tipi di dato già esistenti. In particolare, permette di assegnare un nome aggiuntivo o alternativo a dei tipi di dato esistenti, con lo scopo di semplificare la sintassi di dichiarazione di particolari strutture di dati, quali le struct o le union. Il suo utilizzo non si ferma a tali tipi di dato, ma può essere applicato a qualsiasi tipo di dato, come ad esempio ai char, int, ecc. Di seguito viene riportata la sintassi del typedef:typedef tipo_dato nome_tipo;dove typedef è la keyword necessaria per aggiungere un nome, tipo_dato è il tipo di dato a cui si vuole aggiungere un nome, mentre nome_tipo è l’alias associato a tipo_dato.

Nota: il typedef non definisce nuovi tipi di dato, ma introduce solamente un nome aggiuntivo al tipo di dato specificato. Inoltre, risulta essere possibile assegnare più alias allo stesso tipo di dato, come anche assegnare un alias ad un altro alias.

Consideriamo il seguente esempio di definizione: typedef int ciao;

In questo caso abbiamo aggiunto l’alias “ciao” al tipo di dato int, questo significa che possiamo dichiarare variabili di ciao, che corrispondono ad dati di tipo int:int x = 2; o equivalentementeciao x = 2;

Ovviamente con i tipi di dato come gli interi non risulta essere così utile la keyword typedef, infatti il suo utilizzo tipicamente si focalizza su tipi di dato più complessi, come le strutture o le union.

Esempio di utilizzo del typedef con le struct in C

Per utilizzare i typedef all’interno delle struct (o in modo analogo per le union) si fa uso della seguente sintassi:



struct nome_struttura{
	tipoDato_1;
	tipoDato_2;
	…
} nome_tipo;

Ad esempio consideriamo il seguente programma in cui viene definita una struttura di nome Persona, a cui vengono aggiunte due alias diversi: studente ed insegnante. Queste aggiunte permettono di creare delle strutture di dati basate sullo stesso tipo di struct, ma con nomi diversi. Se il funzionamento del programma rimane invariato, l’utilizzo di particolari nomi permette di avere una visione più semplificata delle variabili dichiarate, infatti possiamo dichiarare variabili di tipo studente o insegnante, invece di usare il termine Persona.



#include <stdio.h>

typedef struct Persona{
    char nome[50];
    char cognome[50];
    int eta;
} studente, insegnante;

int main(){
    studente s;
    insegnante in;
    
    s.eta = 22;
    in.eta = 56;
    
    printf("Eta' studente: %d\n", s.eta);
    printf("Eta' insegnante: %d\n", in.eta);

    return 0;
}


Eta' studente: 22 Eta' insegnante: 56

Ovviamente si tratta solamente di una rinominazione dei tipo di dato che non comporta cambiamenti al funzionamento di base del codice, ma permette semplicemente di aiutare nell’identificare particolari tipi di dato.

Indice pagine linguaggio C: