Maison > développement back-end > C++ > Quelle est la différence entre `ptr`, `ptr` et ` *ptr` dans les expressions de pointeur C ?

Quelle est la différence entre `ptr`, `ptr` et ` *ptr` dans les expressions de pointeur C ?

Susan Sarandon
Libérer: 2024-12-08 11:05:12
original
817 Les gens l'ont consulté

What's the Difference Between `ptr  `, `  ptr`, and `  *ptr` in C Pointer Expressions?

Expressions de pointeurs : comprendre ptr , ptr et *ptr

Les pointeurs en C sont fondamentaux pour accéder et manipuler les données stockées en mémoire. Dans les expressions de pointeur, des opérateurs tels que *, et pré/post-incrément ( / ) peuvent être combinés pour produire différents effets. Ce guide approfondira les subtilités de ces expressions de pointeur.

*ptr

  • *ptr incrémente le pointeur ptr d'un emplacement mémoire, ce qui signifie qu'il passe à la valeur suivante dans la mémoire vers lequel il pointe.
  • La valeur déréférencée à l'emplacement d'origine pointé par ptr est récupérée et peut être utilisée sur.
  • Ensuite, le pointeur ptr est incrémenté.

* ptr

  • * ptr incrémente le pointeur ptr d'un emplacement mémoire, en se déplaçant vers le valeur suivante dans la mémoire.
  • La valeur au nouvel emplacement est déréférencée et devient la valeur de l'expression. value.
  • Cette expression incrémente effectivement le pointeur en premier, garantissant que la valeur référencée provient de l'emplacement incrémenté.

*ptr

  • *ptr déréférences le pointeur ptr, récupère sa valeur actuelle.
  • Il incrémente ensuite la valeur déréférencée de un.
  • Notez que cette expression modifie la valeur à l'emplacement pointé par ptr.

Exemple du monde réel

Considérez l'extrait de code :

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr;

    printf("%d\n", *ptr++); // prints 1 and increments ptr to 2
    printf("%d\n", *ptr++); // prints 2 and increments ptr to 3
    printf("%d\n", *ptr++); // prints 3 and increments ptr to 4

    return 0;
}
Copier après la connexion

Dans cet exemple, le pointeur ptr pointe vers le premier élément du tableau arr.

  • *ptr récupère la valeur 1 du premier élément et incrémente ptr.
  • * ptr récupère la valeur 2 du deuxième élément.
  • Incrémentation ptr dans les expressions précédentes, il l'avance aux troisième et quatrième éléments.

Supplémentaire Considérations

  • Les expressions de pointeur telles que ptr et ptr peuvent provoquer des erreurs arithmétiques de pointeur si elles sont utilisées avec des tableaux.
  • Modifier les littéraux de chaîne à l'aide d'expressions de pointeur, comme dans *ptr, est un comportement indéfini.
  • L'utilisation de (*ptr) déréférence explicitement le pointeur, permettant la modification de la valeur vers laquelle il pointe.

Comprendre ces expressions de pointeur est crucial pour manipuler efficacement les données en programmation C. Une application appropriée garantit un accès efficace à la mémoire et un comportement correct du programme.

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