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:
Nella prima maschera rappresenta
postfix-expression
un valore ounion
unstruct
tipo eidentifier
denomina un membro della struttura o dell'unione specificata. Il valore dell'operazione è quello diidentifier
e è un l-value sepostfix-expression
è un l-value. Per altre informazioni, vedere Espressioni L-Value e R-Value.Nella seconda maschera rappresenta
postfix-expression
un puntatore a una struttura o a un'unione eidentifier
denomina un membro della struttura o dell'unione specificata. Il valore è quello diidentifier
e è un l-value.
I due formati delle espressioni di selezione dei membri hanno effetti simili.
Infatti, un'espressione che coinvolge l'operatore member-selection (->
) è una versione abbreviata di un'espressione usando il punto (.
) se l'espressione prima del periodo è costituita dall'operatore di riferimento indiretto (*
) applicato a un valore puntatore. Quindi,
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 (*
) usato in questi esempi, vedere Operatori address-of e di riferimento indiretto.
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 l'indirizzo della item
struttura viene assegnato al sp
membro della struttura. Significa che item
contiene un puntatore a se stesso.
(item.sp)->a = 24;
In questo esempio, l'espressione puntatore item.sp
viene usata 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.