una struct dentro una struct vuol dire che dichiaro una variabile di quel tipo.

se dichiari

codice:
struct a {
int b;
};
per creare un dato di tipo a, devi specificare che è una struttura, in C, quindi struct a dichiari.

codice:
struct a var;//vuol dire dato di tipo struct a, chiamato var
Per evitare di scrivere ogni volta struct si può fare questo:

codice:
...
typedef struct squadra
{
//ecc...
} Arsenal;
 ...
La freccia è appunto l'operatore freccia , è una sorta di varainte dell'operatore punto specifico per chiamare membri di un puntatore a struttura.

pe intenderci, -> sia dereferenzia che accede al membro, corrisponde a:

codice:
...
*(struttura).membro;
...