Maison >développement back-end >C++ >Comprendre les pointeurs
Dans les diplômes technologiques, il y a des concepts et des sujets qui effraient généralement les étudiants, certains des principaux exemples sont des sujets liés à la programmation orientée objet et au calcul, un autre exemple sont des notions plus basiques abstraites des structures telles que les pointeurs, principalement en C, sujet de cet article.
Contrairement à nous, les ordinateurs ne connaissent pas certaines informations par une « étiquette » ou un « nom », mais plutôt par l’adresse où se trouvent ces données en mémoire. Nous pouvons considérer la mémoire comme un ensemble de « cellules » contenant un certain nombre de bits stockant 0 ou 1 et chaque cellule est associée à une certaine adresse où elle stocke certaines informations afin que les programmes exécutés par la machine puissent accéder à ces données et les manipuler. ça.
Sachant que pour qu'un programme puisse utiliser des données, il a besoin de connaître son adresse en mémoire, on peut concevoir la notion de pointeur. Le pointeur est une variable qui « pointe » vers d'autres données, c'est comme s'il s'agissait d'un espace en mémoire destiné à stocker l'adresse d'une autre variable ou une information afin qu'elle puisse être manipulée.
Mais maintenant la question se pose : à quoi sert un pointeur ? Le pointeur permet certaines opérations plus complexes impliquant de la mémoire, comme l'allocation dynamique avec Malloc ou la création de structures de données plus complexes, etc. De plus, il y a certains détails qui ne sont pas si faciles à remarquer au début, comme le fait que le nom d’un vecteur est un pointeur. C'est vrai, un vecteur n'est rien de plus qu'un « pointeur fixe » qui pointe vers une certaine position en mémoire et que l'on utilise l'index pour manipuler selon les besoins.
Une autre utilisation consiste à manipuler des données par référence, par exemple : passer un tableau en tant que paramètre à une autre fonction, permettant ainsi de modifier le tableau d'origine au lieu que la valeur transmise ou l'objet ne soit qu'une copie, ce qui, par exemple, se produit en Javascript où il n'y a pas de concept de pointeur (du moins pas explicitement), par exemple :
#include <stdio.h> int vet [5] ={10,20,3,4}; void somadez(int * ref){ for(int i=0;i<5;i++) ref[i]+=10; } int main () { somadez(vet); for(int i=0;i<5;i++) printf("%i\n",vet[i]); return 0; } saída: 20 30 13 14 note que quem foi alterado foi o vetor original
Une autre utilisation pas si évidente des pointeurs, cette fois pour les langages orientés objet, où l'on peut, par exemple, créer des objets dynamiques et faciliter le travail avec l'héritage et le polymorphisme.
Nous avons cet exemple ci-dessous avec C++ :
#include <iostream> using namespace std; class Animal{ public: virtual void som(); }; class Cachorro : public Animal{ public: void som(){ cout << "auau"; } }; int main () { Animal * ClasseBase; Cachorro ClasseFilha; ClasseBase = &ClasseFilha; ClasseBase->som(); //neste caso podemos usar o ponteiro para acessar métodos e atributos de uma classe derivada. return 0; }
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!