Maison >développement back-end >C++ >Quelle est la différence entre `*ptr `, `* ptr`, ` *ptr` et `(*ptr) ` en C ?

Quelle est la différence entre `*ptr `, `* ptr`, ` *ptr` et `(*ptr) ` en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-11 03:03:12935parcourir

What's the Difference Between `*ptr  `, `*  ptr`, `  *ptr`, and `(*ptr)  ` in C?

Expressions de pointeur : navigation dans ptr, ptr et *ptr

Ces expressions de pointeur sont souvent rencontrées dans la programmation C et peut être difficile à comprendre. Voici une explication détaillée :

1. *ptr

  • Précédence : * (indirection) a une priorité plus élevée que (incrément).
  • Valeur d'expression : Évalue à la valeur indiquée par ptr avant d'incrémenter.
  • Côté Effet :Incrémente ptr d'une unité de mémoire.

Exemple :

int a = 5;
int *ptr = &a;

*ptr++; // evaluates to 5, then increments ptr to point to the next integer

2. * ptr

  • Précédence : (incrément) et * (indirection) ont une priorité égale.
  • Valeur d'expression : Évalue à la valeur indiquée par ptr après l'incrémentation.
  • Côté Effet :Incrémente ptr d'une unité de mémoire.

Exemple :

int a = 5;
int *ptr = &a;

*++ptr; // evaluates to 6 (a++) and increments ptr

3. *ptr

  • Précédence : (incrément) et * (indirection) ont une priorité égale.
  • Associativité : Droite- vers la gauche.
  • Valeur d'expression :Incréments la valeur indiquée par ptr.
  • Effet secondaire :Aucun.

Exemple :

int a = 5;
int *ptr = &a;

++*ptr; // increments a to 6

4. (*ptr)

  • Précédence : Les parenthèses remplacent les règles de priorité.
  • Valeur d'expression : Évalue à la valeur déréférencée à ptr avant d'incrémenter.
  • Côté Effet : Incrémente la valeur déréférencée.

Exemple :

int a = 5;
int *ptr = &a;

(*ptr)++; // evaluates to 5, then increments *ptr to 6

Notez que ptr , ptr et ptr peuvent planter si ptr est un identifiant de tableau, tandis que (ptr) peut planter si ptr pointe vers une chaîne littéral.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn