Membri di struttura e di unione
Un'"espressione di selezione dei membri" si riferisce ai membri di strutture e unioni. Un'espressione di questo tipo ha il valore e il tipo del membro selezionato.
postfix-expression . identifier
postfix-expression –> identifier
In questo elenco vengono descritti i due formati delle espressioni di selezione dei membri:
Nel primo formato, postfix-expression rappresenta un valore di tipo struct o union e identifier assegna un nome a un membro della struttura o unione specificata. Il valore dell'operazione è quello di identifier ed è un'espressione l-value se postfix-expression è un'espressione l-value. Per ulteriori informazioni vedere Espressioni L-value e R-value.
Nel secondo formato, postfix-expression rappresenta un puntatore a un'unione o una struttura e identifier assegna un nome a un membro della struttura o unione specificata. Il valore è quello di identifier ed è un l-value.
I due formati delle espressioni di selezione dei membri hanno effetti simili.
Infatti, un'espressione che utilizza l'operatore di selezione dei membri (–>) è una versione abbreviata di un'espressione con il punto (.) se l'espressione prima del punto è l'operatore di riferimento indiretto (*) applicato a un valore del puntatore. Pertanto,
expression –> identifier
equivale a
(*expression) . identifier
quando expression è un valore del puntatore.
Esempi
Negli esempi seguenti viene fatto riferimento a questa dichiarazione della struttura. Per informazioni sull'operatore di riferimento indiretto (*) utilizzato in questi esempi, vedere Operatori di riferimento indiretto e address-of.
struct pair
{
int a;
int b;
struct pair *sp;
} item, list[10];
Un'espressione di selezione dei membri per gli aspetti della struttura item sarà:
item.sp = &item;
Nell'esempio precedente, l'indirizzo della struttura item viene assegnato al membro sp della struttura. Ciò significa che item contiene un puntatore a se stesso.
(item.sp)–>a = 24;
In questo esempio, l'espressione puntatore item.sp viene utilizzata con l'operatore di selezione dei membri (–>) per assegnare un valore al membro a.
list[8].b = 12;
In questa istruzione viene illustrato come selezionare un singolo membro della struttura da una matrice di strutture.