Maison  >  Article  >  développement back-end  >  \"const int\" vs \"int const\" en C et C : sont-ils vraiment identiques ?

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

DDD
DDDoriginal
2024-10-27 02:06:30689parcourir

'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>

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>

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!

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