Maison > développement back-end > C++ > Placement Const en C : `const T` vs `T const` – Lequel dois-je utiliser ?

Placement Const en C : `const T` vs `T const` – Lequel dois-je utiliser ?

Barbara Streisand
Libérer: 2024-12-18 11:51:16
original
939 Les gens l'ont consulté

Const Placement in C  : `const T` vs. `T const` – Which Should I Use?

Pourquoi "const T" et "T const" sont tous deux valides et lequel devriez-vous utiliser ?

En C, le mot-clé const peut être utilisé pour empêcher toute modification d'un objet ou d'un pointeur. Surprenant pour certains développeurs, la syntaxe peut varier :

const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
Object const *obj; // same as const Object* obj;
Copier après la connexion

La question se pose de savoir quelle syntaxe est venue en premier et pourquoi les deux sont correctes.

Origine historique du placement de const

La grammaire du langage pour C et C permet un analyseur de gauche à droite, ce qui signifie que le compilateur lit les entrées de gauche à droite. à droite et traite les jetons au fur et à mesure qu'il les rencontre.

Lors de l'analyse de la déclaration, lorsque le jeton est consommé, l'état de la déclaration passe à un type de pointeur. Si const rencontre le en premier, le qualificatif s'applique à la déclaration du pointeur ; s'il le rencontre avant le *, le qualificatif s'applique aux données référencées.

Comme le sens sémantique ne change pas en raison de la position de const, les deux placements sont acceptés.

Implications pour les pointeurs de fonction

Une situation similaire se produit avec la fonction pointeurs :

  • void * function1(void) déclare une fonction pour renvoyer un pointeur vide.
  • void (* function2)(void) déclare un pointeur de fonction vers une fonction qui renvoie void .

Une fois de plus, l'interprétation de l'analyseur de gauche à droite est évidente dans le syntaxe.

Utilisation préférée

En fin de compte, il n'y a pas de préférence claire pour une syntaxe par rapport à l'autre. Le choix doit être fait en fonction de la lisibilité et des préférences du développeur.

Cependant, si une cohérence avec la syntaxe des pointeurs et des pointeurs de fonction est souhaitée, l'utilisation de const à gauche du type référencé peut être plus appropriée :

const Object* obj; // no change to obj pointer or value
Object const *obj; // no change to obj pointer or value
Copier après la connexion

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