1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

LANGAGE DE PROGRAMMATION C ++ POUR LES HACKERS - POINTEURS:

abdelouafiJan 23, 2017

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      267
      Likes Received:
      8
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      ce-quil-faut-maitriser-pour-devenir-un-bon-hacker.jpg

      Aujourd'hui, nous partageons avec vous la première leçons sur les pointeurs!.

      Les pointeurs peuvent être source de confusion, et de temps en temps, vous surprendrez pourquoi vous auriez jamais besoin de les utiliser. La réalité est qu'ils vont construire certaines choses beaucoup plus facile. À titre d'exemple, l'utilisation de pointeurs est une méthode pour posséder une opération permettant de modifier une variable passée à une fonction. Il est en outre possible d'utiliser des astuces qui pourraient dynamiquement répartir la mémoire permettant des techniques de programmation liées, comme des listes connectées et des tableaux redimensionnables. Les pointeurs sont ce qu'ils ressemblent ... pointeurs. Ils visent des emplacements en mémoire (RAM). L'image d'un pot énorme qui tient la situation d'un autre pot. Dans le pot alternatif, il ya un morceau de papier avec le montant 12 écrit. Le pot avec le 12 est le numéro de degré associé, et par conséquent le pot avec l'adresse de mémoire du 12 peut être un pointeur.

      La syntaxe de pointeur en C ++ peut être source de confusion, chaque pointeurs fournit l'emplacement de mémoire et une valeur particulière de maintien sur le même emplacement. Pour déclarer un pointeur, on utilise la syntaxe est la suivante:
      Code:
      variable_type * name;


      Notez le *. C'est souvent la clé de la déclaration d'un pointeur, si vous l'utilisez avant le nom de la variable, il déclarera la variable comme un pointeur.

      Comme je l'ai déjà dit, il ya 2 façons d'utiliser le pointeur pour accéder aux données concernant l'adresse mémoire à laquelle il pointe. Il est possible fournir l'adresse particulière à une variable différente, ou de le passer dans un fonctionnement (fonction ou procédure). Pour ce faire, il suffit d'utiliser le nom du pointeur alors que pas le *. Toutefois, pour accéder à l'emplacement mémoire particulier, utilisez le *. Le nom technique pour ce faire est souvent déréférencement.

      Afin d'avoir un pointeur vraiment pointer vers une variable différente, il est nécessaire de posséder l'adresse mémoire de cette variable en plus. Pour insister sur l'adresse mémoire de la variable, placez le signe & devant le nom de la variable. Cela lui permet d'offrir son adresse. Cela est souvent appelé l'opérateur d'adresse, car il renvoie l'adresse mémoire.

      Par exemple:

      Code:
      #include<iostream>
      
      using namespace std;
      
      int main()
      
      {
      
      int x;  // X variable de type entier
      
      int *p;  //p est un pointeur sur des entiers
      
      p=&x;  // affecter l'adresse de x dans p
      
      cin>>x;  // donner une valeur à x , on peut aussi utiliser *p
      
      cin.ignore();
      
      cout<<*p<<"\n";  // notez bien l'utilisation de * pour avoir la valeur
      
      cin.get();
      
      }
      
      Le cout affiche la valeur en x. Pourquoi donc? Eh bien, enquêter sur le code. Le nombre entier est nommé x. Un pointeur vers un nombre entier est alors décrit comme p, qui pointe vers x. Ensuite, il stocke l'emplacement mémoire de x dans le pointeur à l'aide de l'opérateur d'adresse (&). Si vous le voulez, vous pouvez le considérer comme si le pot qui avait le nombre entier avait un signe de ponctuation, puis il sortirait son nom (dans les pointeurs, l'adresse de la mémoire) Puis l'utilisateur saisit la valeur pour x . Ensuite, le cout utilise le * pour placer la valeur de x dans l'emplacement mémoire du pointeur. Si le pot avec le nom du pot opposé en lui avait un * avant de lui fourniraient la valeur gardent dans le bocal avec un nom semblable parce que celui dans le bocal avec le nom. Ce n'est pas trop épuisant, le * fournit la valeur dans l'emplacement. Le non marqué fournit l'emplacement mémoire.

      Notez que dans l'exemple ci-dessus, le pointeur est initialisé pour pointer vers une adresse de mémoire particulière avant qu'il soit utilisé. Si ce n'était pas le cas, il pourrait bien fournir quelque chose. Cela peut entraîner des conséquences extraordinairement désagréables pour l'ordinateur. Vous devez toujours initialiser les pointeurs avant de les utiliser.

      Il est également possible d'initialiser des pointeurs utilisant la mémoire libre. Cela permet l'allocation dynamique de la mémoire de la matrice. Il est plus utile pour mettre en place des structures appelées listes jointes. Ce sujet difficile est tout simplement trop avancé pour ce tutoriel.

      Le mot-clé new est utilisé pour initialiser les pointeurs avec la mémoire de free store (une section de mémoire offerte à tous ou à tous les programmes). La syntaxe apparaît comme l'exemple:


      Code:
      int *ptr = new int;


      Il initialise ptr pour pointer vers une adresse mémoire de taille int (parce que les variables ont des tailles complètement différentes, une variété d'octets, ce qui est souvent nécessaire). La mémoire qui est pointé devient inaccessible aux différents programmes. Cela implique qu'il faut libérer cette mémoire à la fin de son utilisation.

      L'opérateur de suppression libère la mémoire allouée. Pour ce faire, la syntaxe est comme dans l'exemple:

      Code:
      delete ptr;
      Après avoir supprimé un pointeur, c'est un plan honnête de le réinitialiser à zéro. Une fois que 0 est affecté à un pointeur, le pointeur devient un pointeur null, en d'autres termes, il ne pointe sur rien. En faisant cela, une fois que vous faites une chose stupide avec le pointeur (ça arrive beaucoup, même avec des connaissances sur la programmation), vous découvrez instantanément plutôt que plus tard, une fois que vous avez fait un dommage appréciable.


      Merci de nous soutenir en partageant cet article.
      notre page facebook: https://www.facebook.com/langagedeprogrammation/?ref=bookmarks
       
      Loading...

Share This Page

Share