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:

  1. Nella prima maschera postfix-expression rappresenta un valore o union di struct tipo e identifier assegna un nome a un membro della struttura o dell'unione specificata. Il valore dell'operazione è quello di identifier e è un l-value se postfix-expression è un l-value. Per altre informazioni, vedere Espressioni L-Value e R-Value.

  2. Nella seconda maschera rappresenta postfix-expression un puntatore a una struttura o a un'unione e identifier assegna un nome a un membro della struttura o dell'unione specificata. Il valore è quello di identifier e è un l-value.

I due formati delle espressioni di selezione dei membri hanno effetti simili.

Un'espressione che coinvolge l'operatore member-selection (->) è infatti una versione abbreviata di un'espressione che usa 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.

Esempio

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.

Vedi anche

Operatori di accesso ai membri: . E->