76 votes

valeur d'incrément de int étant pointé par un pointeur

J'ai un pointeur int (int * count) si je veux incrémenter l'entier pointé en utilisant ++, je pensais appeler

 *count++;
 

Cependant, je reçois un avertissement de construction "résultat d’expression inutilisé". je peux appeler

 *count += 1;
 

Mais j'aimerais savoir comment utiliser le ++. Des idées?

99voto

Doug T. Points 33360

Le ++ a la même priorité à l' * et l'associativité est de droite à gauche. Voir ici. C'est d'autant plus complexe, car même si les ++ sera associé avec le pointeur de la majoration est appliquée après la déclaration de l'évaluation.

L'ordre des choses arriver, c'est:

  1. Post incrémentation, n'oubliez pas le post-incrémenté pointeur de la valeur de l'adresse temporaire
  2. Déréférencement de non-incrémenté adresse de pointeur
  3. Appliquer le incrémenté adresse de pointeur compter, dénombrer les points aujourd'hui pour la prochaine adresse mémoire possible pour une entité de son type.

Vous obtenez l'avertissement parce que vous n'avez jamais réellement utiliser la valeur déréférencée à l'étape 2. Comme @Sidarth dit, vous aurez besoin des parenthèses pour forcer l'ordre de l'évaluation:

 (*ptr)++

19voto

Sidharth Panwar Points 2550

Essayez d'utiliser (* count) ++. * count ++ peut incrémenter le pointeur sur la position suivante puis utiliser indirection (ce qui est involontaire).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X