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
Libérer: 2024-12-11 03:03:12
original
868 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal