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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 07:20:09216parcourir

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

Expressions de pointeur : ptr, ptr et *ptr

Comprendre ces trois expressions de pointeur peut être intimidant. Ce guide détaillé détaillera le fonctionnement de chaque expression et fournira des exemples pour leur application pratique dans le code.

*ptr

Cette expression déréférence le pointeur puis incrémente le adresse.

Exemple :

char *p = "Hello";
while (*p++) {
    printf("%c", *p);
}

Ce code imprime "ello" au lieu de "Bonjour" car le pointeur est incrémenté après avoir accédé au caractère, sauter le caractère 'H'.

* ptr

Cette expression incrémente l'adresse du pointeur puis déréférence le pointeur.

Exemple :

char *p = "Hello";
printf("%c", *++p);

Ce code imprime "e" comme caractère après le la valeur initiale du pointeur (qui pointe vers « H ») est accessible avant d'être incrémentée pour pointer vers 'e'.

*ptr

Cette expression déréférence le pointeur puis incrémente la valeur à l'adresse.

Exemple :

char q[] = "Hello";
char *p = q;
printf("%c", ++*p);

Ce code imprime "I" car la valeur à l'adresse est directement incrémentée à 'I'.

(*ptr)

Cette expression est légèrement différente et force un déréférencement avant d'incrémenter la valeur.

Exemple :

char q[] = "Hello";
char *p = q;
printf("%c", (*p)++);

Ce code imprime "H" puis crée la cible d'incrément suivante 'Je'.

Conclusion

Ces expressions de pointeur offrent une flexibilité dans la manipulation du pointeur. Cependant, il est crucial d'être conscient de leurs subtilités, notamment de l'ordre de priorité, de l'évaluation de la valeur et des effets secondaires. En comprenant ces opérations en détail, vous pouvez les utiliser efficacement dans votre code et éviter les pièges potentiels.

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