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. Nel primo form, 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 altre informazioni, vedere Espressioni L-value e R-value.

  2. Nel secondo form, postfix-expression rappresenta un puntatore a un'unione o a 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 usa l'operatore di selezione dei membri (->) è una versione abbreviata di un'espressione che usa il punto (.) se l'espressione prima del punto è l'operatore di riferimento indiretto (\*) applicato a un valore puntatore. Quindi,


expression  
->  
identifier  

equivale a


(*  
expression  
) .  
identifier  

quando expression è un valore 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 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 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.

Vedere anche

Operatori di accesso ai membri: . e ->