codice:
struct Qualcosa {
   int dato;
};


struct Qualcosa q;
struct Qualcosa *pq;

pq = &q;

1) q.dato;      

2) (*pq).dato; 

3) pq->dato;
1) q è una struct. L'accesso al dato si effettua tramite .

2) pq è un puntatore a una struct. Per accedere al dato devo prima dereferenziare il puntatore pq, tramite (*pq), e poi accedere al dato tramite il punto.

3) pq è un puntatore a una struct. Per accedere al dato senza dereferenziare il puntatore posso usare l'operatore ->

In pratica la 3 è la versione breve (ed elegante) di 2.