Cette section fournit une vue d'ensemble de ce que sont les pointeurs et pourquoi un développeur peut vouloir l'utiliser.
Il devrait également mentionner tous les grands sujets dans les indicateurs, et établir un lien avec les sujets connexes. La documentation des pointeurs étant nouvelle, vous devrez peut-être créer des versions initiales de ces rubriques connexes.
Les pointeurs sont des variables qui stockent l'adresse d'une autre variable.En tant que fonctionnalité de langue, ils sont disponibles dans plusieurs langages de programmation tels que, mais sans s'y limiter:
Pour commencer à utiliser les pointeurs C / C ++, procédez comme suit:
Installez le compilateur comme Minimalistic GNU pour Windows, http://www.mingw.org/wiki/Getting_Started
Accédez au dossier d'installation de g ++ binary via la ligne de commande, par exemple:
C:\MinGW\bin>
3.Créez un fichier texte et écrivez ce programme C ++
#include <iostream>
int main () {
int pointed=0;
int* ptr = & pointed;
std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;
return 0;
}
g ++ -o pointer.exe -c pointer.cpp
L'adresse de la variable pointée est: 0x7e892dac0a0c
Si vous recevez la sortie ci-dessus, vous avez écrit votre premier programme de pointeur
C'est essentiellement l'adresse d'une variable en mémoire. Cela nous permet d'accéder indirectement à une variable. Donc, en utilisant des pointeurs, nous pouvons parler de l'adresse d'une variable (ainsi que de sa valeur en supprimant le pointeur). Ils sont utiles lorsque nous voulons traiter l'adresse d'un emplacement de mémoire plutôt que sa valeur.
Considérons la fonction d'échange simple suivante dans C:
void Swap(int firstVal, int secondVal)
{
int tempVal = firstVal;
firstVal = secondVal;
secondVal = tempVal;
}
maintenant dans main si nous avons le code suivant:
.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
Les valeurs de a et b resteraient inchangées comme cela serait clair en imprimant leurs valeurs dans la fonction principale. Pour implémenter correctement la fonction swap, au lieu de passer les valeurs des variables a
et b
, nous passons l'adresse des variables a et b comme:
swap(&a,&b);
L'opérateur &
, renvoie l'adresse de la variable. Son utilisé comme ceci:
int *address_of_a = &a;
int *address_of_a
indique que la variable address_of_a
pointe vers (stocke l'adresse de) une variable entière.
Maintenant, notre fonction de swap correcte serait:
void Swap(int *firstaddress, int *secondaddress)
{
int tempVal = *firstaddress;
*firsaddress = *secondaddress;
*secondaddress = tempVal;
}
Maintenant, les valeurs échangées se refléteraient dans la fonction principale:
int a = 9,b = 100;
swap(&a,&b);
//print
Vous pouvez toujours déréférencer le pointeur avec *
si vous ne possédez pas la variable d'origine. Supposons que, dans une fonction, vous ne disposez pas de la variable d'origine mais que son adresse se trouve dans une variable de pointeur int *x
. Nous pouvons simplement accéder à la valeur de l'adresse mémoire en tant que value = *x
;
Si nous n'avions pas de pointeurs, nous ne pourrions jamais émuler le passage par référence dans C
, car C
est un passage par valeur . Mais rappelez-vous que nous ne pouvons émuler que parce que, même lorsque nous utilisons des pointeurs, l’ int *firstaddress, int *secondaddress
ne sont que des variables de pointeur locales créées, qui ont l’adresse des variables a
et b
.