Miembros de estructura y de unión
Una expresión de selección de miembro (“member-selection expression”) hace referencia a miembros de estructuras y uniones. Tal expresión tiene el valor y el tipo del miembro seleccionado.
postfix-expression
.
identifier
postfix-expression
->
identifier
En esta lista se describen las dos formas de expresiones de selección de miembro:
En la primera forma,
postfix-expression
representa un valor de tipostruct
ounion
eidentifier
nombra a un miembro de la estructura o unión especificadas. El valor de la operación es el deidentifier
y es un valor L sipostfix-expression
es un valor L. Para más información, vea Expresiones de valor L y de valor R.En la segunda forma,
postfix-expression
representa un puntero a una estructura o unión, eidentifier
nombra un miembro de la estructura o unión especificadas. El valor es el deidentifier
y es un valor L.
Las dos formas de expresiones de selección de miembros tienen efectos similares.
De hecho, una expresión que contenga el operador de selección de miembro (->
) es una versión abreviada de una expresión que usa el punto (.
) si la expresión anterior al punto consta del operador de direccionamiento indirecto (*
) aplicado a un valor de puntero. Por lo tanto,
expression->identifier
es equivalente a
(*expression).identifier
cuando expression
es un valor de puntero.
Ejemplos
Los ejemplos siguientes hacen referencia a esta declaración de estructura. Para obtener información sobre el operador de direccionamiento indirecto (*
) que se usa en estos ejemplos, vea Operadores de direccionamiento indirecto y address-of.
struct pair
{
int a;
int b;
struct pair *sp;
} item, list[10];
Una expresión de selección de miembro para la estructura item
tiene el siguiente aspecto:
item.sp = &item;
En el ejemplo, la dirección de la estructura item
se asigna al miembro sp
de la estructura. Esto significa que item
contiene un puntero a sí mismo.
(item.sp)->a = 24;
En este ejemplo, la expresión de puntero item.sp
se usa con el operador de selección de miembro (->
) para asignar un valor al miembro a
.
list[8].b = 12;
Esta instrucción muestra cómo seleccionar un miembro de estructura individual de una matriz de estructuras.