[Connaissances de base C ++] modificateur const

modificateur const

En langage C, nous avons l'habitude d'utiliser #define pour définir des constantes, par exemple

#define MAX 100

En fait, cette méthode remplace uniquement les caractères pendant le prétraitement et remplace tous les "MAX" par "100". Après cela, l'identificateur MAX n'est plus dans le programme.

Ce MAX n'est pas une variable, n'a pas de type, n'occupe pas de mémoire et est sujet aux erreurs.

C ++ fournit un moyen plus flexible et plus sûr de définir des constantes, c'est-à-dire d'utiliser const pour modifier les constantes, par exemple:

const int MAX=100;

Le MAX ici a un type, occupe une unité de stockage, a une adresse et peut utiliser un pointeur pour pointer vers lui, mais sa valeur ne peut pas être modifiée.

Regardez le code suivant:

#include<iostream>                      
using namespace std; 
int main()
{
    
    
	int a = 1;
    #define T1 a+a;
    #define T2 T1-T1;
	cout << "T2 is " << T2 ;
	return 0;
}

À première vue, les résultats du programme semblent être imprimés

T2 vaut 0

Mais le résultat réel de ce programme est

T2 vaut 2

La raison en est que la phrase de huitième ligne est interprétée comme

cout<<"T2 is "<<a+a-a+a<<endl;

Si le programme utilise const au lieu de #define, cette erreur ne se produira pas. comme suit:

#include<iostream>                      
using namespace std; 
int main()
{
    
    
	int a = 1;
    int const T1=a+a;
    int const T2=T1-T1;
	cout << "T2 is " << T2 ;
	return 0;
}

Résultats de la:
Insérez la description de l'image ici

Par conséquent, C ++ recommande d'utiliser const au lieu de #define pour définir des constantes

pointeur modifié const

1. Un pointeur vers une constante, par exemple;

const char * name ="hyx";                //声明指向常量的指针

Le pointeur est autorisé à modifier l'adresse vers laquelle il pointe, mais il ne peut pas modifier la constante pointée.

name[3]='a';                           //错误,不允许改变指针所指的常量
name="xxxxxxx";                        //合法,可以改变指针所指的地址

2. Le pointeur de constante fait référence à la définition de l'adresse pointée par le pointeur en tant que constante

Comme son nom l'indique, l'adresse du pointeur est constante et ne peut pas être modifiée, mais les données vers lesquelles il pointe peuvent être modifiées.

3. Pointeur constant vers la constante

Ni l'adresse ni les données de l'adresse ne peuvent être modifiées.

La description

1. Si vous utilisez const pour définir une constante entière, le mot-clé int peut être omis. Par exemple, les deux définitions suivantes sont équivalentes:

  const int MAX=100;
  const MAX=100;

2. Une fois qu'une constante est créée, elle ne peut être modifiée nulle part dans le programme.

3. Contrairement aux constantes définies par #define, les constantes définies par const peuvent avoir leurs propres types de données, de sorte que C ++ effectue une vérification de type plus stricte au moment de la compilation et offre une bonne détectabilité au moment de la compilation.

4. Les paramètres formels d'une fonction peuvent également être décrits avec const pour garantir que les paramètres formels ne sont pas modifiés dans la fonction.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43962381/article/details/110704357
conseillé
Classement