Structure et membres d'union
Une « expression de sélection de membres » fait référence aux membres de structures et d'unions. Ce type d'expression a la valeur et le type du membre sélectionné.
postfix-expression
.
identifier
postfix-expression
->
identifier
La liste suivante décrit les deux formes d'expression de sélection de membres :
Dans la première forme,
postfix-expression
représente une valeur destruct
ou de typeunion
, etidentifier
désigne un membre de la structure ou de l’union spécifiée. La valeur de l’opération est celle deidentifier
. Il s’agit d’une l-value sipostfix-expression
est une l-value. Pour plus d’informations, consultez Expressions L-value et R-value.Dans la seconde forme,
postfix-expression
représente un pointeur vers une structure ou une union, etidentifier
désigne un membre de la structure ou de l’union spécifiée. La valeur est celle deidentifier
. Il s’agit d’une l-value.
Les deux formes de ces expressions de sélection de membres ont des effets similaires.
En fait, une expression utilisant l’opérateur de sélection de membres (->
) est une version abrégée d’une expression utilisant le point (.
) si l’expression avant le point inclut l’opérateur d’indirection (*
) appliqué à une valeur de pointeur. Par conséquent,
expression->identifier
équivaut à :
(*expression).identifier
quand expression
est une valeur de pointeur.
Exemples
Les exemples suivants font référence à cette déclaration de structure. Pour plus d’informations sur l’opérateur d’indirection (*
) utilisé dans ces exemples, consultez Opérateurs d’indirection et d’adresse.
struct pair
{
int a;
int b;
struct pair *sp;
} item, list[10];
Une expression de sélection de membres pour la structure item
ressemble à ceci :
item.sp = &item;
Dans l’exemple, l’adresse de la structure item
est assignée au membre sp
de la structure. Cela signifie que item
contient un pointeur vers lui-même.
(item.sp)->a = 24;
Dans cet exemple, l’expression de pointeur item.sp
est utilisée avec l’opérateur de sélection de membres (->
) pour assigner une valeur au membre a
.
list[8].b = 12;
Cette instruction indique comment sélectionner un membre de structure individuel dans un tableau de structures.