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' :
Pour 'int const' :
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!