Maison > développement back-end > C++ > le corps du texte

\'const int\' vs \'int const\' en C et C : sont-ils vraiment identiques ?

DDD
Libérer: 2024-10-27 02:06:30
original
750 Les gens l'ont consulté

'const int' vs. 'int const' comme paramètres de fonction en C et C

Lors de la déclaration de paramètres de fonction avec const, il est crucial de faire la distinction entre 'const int » et « int const ». Bien qu'ils puissent sembler identiques, l'ordre des modificateurs change l'interprétation de la déclaration.

'const int' déclare une variable constante (non modifiable) et de type int. L'accent est ici mis sur le qualificatif const appliqué à la variable.

'int const', en revanche, déclare un variable qui est de type int et également constante. Dans ce cas, le qualificatif const modifie le type, pas la variable.

Alors, ces deux fonctions sont-elles identiques ?

<code class="c">int testfunc1 (const int a) { return a; }
int testfunc2 (int const a) { return a; }</code>
Copier après la connexion

Oui, ils sont équivalents.La lecture de la déclaration à l'envers clarifie cela.

Pour 'const int' :

  • "a" est un entier "constant".

Pour 'int const' :

  • "a" est un " entier constant".

Dans les deux cas, "a" est à la fois un entier et une constante.

Cependant, l'astuce de lecture à rebours devient inestimable dans les déclarations complexes :

<code class="c">// "s" is a pointer to a char that is constant
const char *s;

// "t" is a constant pointer to a char
char *const t = &c;

// The char in "s" is constant, so you can't modify it
*s = 'A'; // Can't do

// The pointer in "s" is not constant, so you can modify it
s++; // Can do

// The char in "t" is not constant, so you can modify it
*t = 'A'; // Can do

// The pointer in "t" is constant, so you can't modify it
t++; // Can't do</code>
Copier après la connexion

N'oubliez pas qu'en C , les données membres const peuvent être initialisées soit dans la déclaration de classe, soit dans le constructeur. Alors qu'en C, les données membres const sont considérées comme des constantes symboliques et doivent être initialisées dans la déclaration, ce qui les rend très proches de #define.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal