Membri di struttura e di unioneStructure and Union Members

Un'"espressione di selezione dei membri" si riferisce ai membri di strutture e unioni.A "member-selection expression" refers to members of structures and unions. Un'espressione di questo tipo ha il valore e il tipo del membro selezionato.Such an expression has the value and type of the selected member.


postfix-expression  
.  
identifier  
postfix-expression  
->  
identifier  

In questo elenco vengono descritti i due formati delle espressioni di selezione dei membri:This list describes the two forms of the member-selection expressions:

  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.In the first form, postfix-expression represents a value of struct or union type, and identifier names a member of the specified structure or union. Il valore dell'operazione è quello di identifier ed è un'espressione l-value se postfix-expression è un'espressione l-value.The value of the operation is that of identifier and is an l-value if postfix-expression is an l-value. Per altre informazioni, vedere Espressioni L-value e R-value.See L-Value and R-Value Expressions for more information.

  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.In the second form, postfix-expression represents a pointer to a structure or union, and identifier names a member of the specified structure or union. Il valore è quello di identifier ed è un l-value.The value is that of identifier and is an l-value.

    I due formati delle espressioni di selezione dei membri hanno effetti simili.The two forms of member-selection expressions have similar effects.

    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.In fact, an expression involving the member-selection operator (->) is a shorthand version of an expression using the period (.) if the expression before the period consists of the indirection operator (****) applied to a pointer value. Quindi,Therefore,


expression  
->  
identifier  

equivale ais equivalent to


(*  
expression  
) .  
identifier  

quando expression è un valore puntatore.when expression is a pointer value.

EsempiExamples

Negli esempi seguenti viene fatto riferimento a questa dichiarazione della struttura.The following examples refer to this structure declaration. Per informazioni sull'operatore di riferimento indiretto (\) usato in questi esempi, vedere Operatori address-of e di riferimento indiretto.For information about the indirection operator (****) used in these examples, see Indirection and Address-of Operators.

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à:A member-selection expression for the item structure looks like this:

item.sp = &item;  

Nell'esempio precedente, l'indirizzo della struttura item viene assegnato al membro sp della struttura.In the example above, the address of the item structure is assigned to the sp member of the structure. Ciò significa che item contiene un puntatore a se stesso.This means that item contains a pointer to itself.

(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.In this example, the pointer expression item.sp is used with the member-selection operator (->) to assign a value to the member a.

list[8].b = 12;  

In questa istruzione viene illustrato come selezionare un singolo membro della struttura da una matrice di strutture.This statement shows how to select an individual structure member from an array of structures.

Vedere ancheSee Also

Operatori di accesso ai membri: . e ->Member Access Operators: . and ->