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

#include <iostream> using namespace std; int main () { int var1; char var2[10]; cout << "Adresse de la variable var1 :"; cout << &var1 << endl; cout << "Adresse de la variable var2 :"; cout << &var2 << endl; return 0; }

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

#include <iostream> using namespace std; int main () { int var = 20; // Déclaration de la variable proprement dite int *ip; // Déclaration de la variable pointeur ip = &var; // Stocker l'adresse de var dans la variable pointeur cout << "Valeur de la variable var : "; cout << var << endl; // Afficher l'adresse stockée dans la variable pointeur cout << "Adresse stockée dans la variable ip : "; cout << ip << endl; // Accéder à la valeur à l'adresse stockée dans le pointeur cout << "Valeur de la variable *ip : "; cout << *ip << endl; return 0; }

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 :

ConceptsDescription
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 tableauxIl existe une relation étroite entre les pointeurs et les tableaux.
C++ Tableau de pointeursDes 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 fonctionsLe 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 fonctionsC++ permet aux fonctions de renvoyer des pointeurs vers des variables locales, des variables statiques et de la mémoire allouée dynamiquement.
autres extensions