C++ Pointeur
Apprendre les pointeurs en C++ est à la fois simple et amusant. Grâce aux pointeurs, certaines tâches de programmation C++ peuvent être simplifiées, et certaines tâches, comme l'allocation dynamique de mémoire, ne peuvent pas être réalisées sans pointeurs. Par conséquent, pour devenir un bon programmeur C++, il est nécessaire d'apprendre les pointeurs.
Comme vous le savez, chaque variable a un emplacement mémoire, et chaque emplacement mémoire définit une adresse à laquelle on peut accéder à l'aide de l'opérateur esperluette (&), qui représente une adresse en mémoire. Voir l'exemple suivant, qui affichera les adresses des variables définies :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
var1 变量的地址: 0xbfebd5c0 var2 变量的地址: 0xbfebd5b6
Grâce à l'exemple ci-dessus, nous avons appris ce qu'est une adresse mémoire et comment y accéder. Voyons maintenant ce qu'est un pointeur.
Qu'est-ce qu'un pointeur ?
PointeurC'est une variable dont la valeur est l'adresse d'une autre variable, c'est-à-dire l'adresse directe d'un emplacement mémoire. Tout comme les autres variables ou constantes, vous devez déclarer un pointeur avant de l'utiliser pour stocker l'adresse d'une autre variable. La forme générale de déclaration d'une variable pointeur est :
type *var-name;
Ici,typeC'est le type de base du pointeur, et il doit être un type de données C++ valide.var-name. Le premier représente un tableau dont les éléments sont des pointeurs vers int. Le second représente un pointeur vers un tableau d'int. Lorsque vous rencontrez ce genre de problèmes, lisez de l'intérieur vers l'extérieur.
int *ip; /* 一个整型的指针 */ double *dp; /* 一个 double 型的指针 */ float *fp; /* 一个浮点型的指针 */ char *ch; /* 一个字符型的指针 */
Le type de données réel de la valeur de tous les pointeurs, qu'il s'agisse d'entiers, de nombres à virgule flottante, de caractères ou d'autres types de données, est le même : un nombre hexadécimal long représentant une adresse mémoire. La seule différence entre des pointeurs de types de données différents est le type de données de la variable ou de la constante vers laquelle le pointeur pointe.
Utilisation des pointeurs en C++
Lors de l'utilisation de pointeurs, les opérations suivantes sont fréquemment effectuées : définir une variable pointeur, affecter l'adresse d'une variable au pointeur, et accéder à la valeur à l'adresse disponible dans la variable pointeur. Celles-ci sont réalisées en utilisant l'opérateur unaire*pour renvoyer la valeur de la variable située à l'adresse spécifiée par l'opérande. L'exemple suivant implique ces opérations :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
Value of var variable: 20 Address stored in ip variable: 0xbfc601ac Value of *ip variable: 20
Les pointeurs C++ en détail
En C++, il existe de nombreux concepts liés aux pointeurs. Ces concepts sont simples, mais ils sont tous très importants. Ci-dessous sont listés quelques concepts importants liés aux pointeurs que les programmeurs C++ doivent clairement comprendre :
| Concepts | Description |
|---|---|
| Pointeur nul en C++ | C++ prend en charge les pointeurs nuls. Un pointeur NULL est une constante définie dans la bibliothèque standard avec une valeur de zéro. |
| Arithmétique des pointeurs en C++ | Quatre opérations arithmétiques peuvent être effectuées sur les pointeurs : ++, --, +, - |
| Pointeurs C++ vs tableaux | Il existe une relation étroite entre les pointeurs et les tableaux. |
| C++ Tableau de pointeurs | Des tableaux peuvent être définis pour stocker des pointeurs. |
| Pointeur vers pointeur en C++ | C++ autorise les pointeurs vers des pointeurs. |
| C++ Passage de pointeurs aux fonctions | Le passage de paramètres par référence ou par adresse fait que les paramètres passés sont modifiés dans la fonction appelante. |
| C++ Retour de pointeurs depuis des fonctions | C++ permet aux fonctions de renvoyer des pointeurs vers des variables locales, des variables statiques et de la mémoire allouée dynamiquement. |