Bonjour et bienvenue à nouveau. Dans cette conférence, je souhaite fournir une
démonstration ou une solution de notre défi précédent qui vous a familiarisé
avec la syntaxe du pointeur, le concept de
pointeur, l'attribution d'une adresse à un pointeur, puis l'affichage d'une sortie pour un pointeur.
Faisons donc apparaître les blocs de code, et nous allons créer un nouveau projet, un
nouveau projet c qui s'appellera simplement les bases des pointeurs, car il va faire les bases des pointeurs.
Nous savons donc comment faire tout cela. Nous allons sélectionner l'application console, nous
assurer que nous avons c et appeler simplement ce
pointeur de base.
Ce concept de pointeur est vraiment, vraiment important.
Nous commençons donc lentement et continuons à partir de là.
Alors on y va. Ici, nous avons notre principal.
Maintenant, tout ce que nous voulons faire est de créer
une variable entière, puis une variable pointeur.
Et nous voulons initialiser les deux.
Donc, la première chose que je vais faire est de créer une
variable entière et je vais juste la nommer number ou num.
Et je vais initialiser cela à 150.
Pour créer une variable de pointeur, elle doit être du même type.
Pour créer un pointeur, tout ce que vous avez à faire est de faire le type de données,
puis l'astérisque dans la déclaration, puis nous appellerons simplement ce pnum pour le numéro du pointeur.
Habituellement, vous souhaitez démarrer vos variables qui sont des pointeurs avec le préfixe p.
Et c'est une bonne idée de toujours, lorsque vous créez vos pointeurs, les initialiser à null.
Null est un mot-clé spécial qui dit que le
pointeur ne pointe vers rien.
Une fois que nous avons
initialisé nos deux variables, notre nombre entier et notre pointeur de nombre entier,
nous voulons ensuite attribuer quelque chose à notre pointeur.
Parce qu'en ce moment notre pointeur ne pointe rien en mémoire.
Et vous voulez vous assurer que tout ce que vous affectez votre
pointeur à cela, qui a réellement un emplacement de mémoire pour
cela, de la mémoire allouée.
Donc, dans ce cas, si nous allons lui attribuer num, num est
un entier sur la ligne 6 qui a de la mémoire allouée pour cela.
C allouera automatiquement de la mémoire pour toute
déclaration de variable.
Même ce pointeur sur la ligne 7 a de la mémoire allouée juste pour stocker le pointeur.
Cela ne signifie pas nécessairement qu'il a de la mémoire allouée pour ce qu'il pointe.
Donc pour signer pnum, une valeur d'une
adresse, il suffit de dire pnum est égal à
esperluette, qui est l'adresse de
l'opérateur et nous voulons
lui attribuer l'adresse de num.
Num a déjà une mémoire allouée pour cela et nous l'avons déclaré.
Ainsi, la ligne 9 attribue simplement l'adresse de num à un pointeur.
C'est aussi simple que ça.
Désormais, lorsque vous créez un pointeur et que
vous lui attribuez une adresse, vous pouvez également créer votre propre mémoire dynamique
et l'affecter. Mais c'est pour un autre exercice. Dans ce cas,
nous avons déjà créé notre variable. Nous allons souligner la valeur de cette variable.
Nous devons attribuer l'adresse de num.
Maintenant, après avoir imprimé, nous avons fait nos affectations, nous avons tout initialisé.
Maintenant, nous voulons juste imprimer quelques informations.
Nous allons donc utiliser le printf et je vais juste dire d'abord
que je veux imprimer la valeur de l'adresse pnum.
Maintenant, quelle est la valeur pnum pour l'adresse,
mais l'adresse pnum. Et ici, nous pouvons en
fait dire l'adresse d'un
pointeur, nous allons donc dire p. Et puis tout ce que nous avons à faire
est de mettre ici, nous devons mettre l'adresse de notre pointeur.
Donc ici on dirait adresse de pnum.
Et qu'est-ce que cela va nous donner, cela va nous donner l'adresse du
pointeur qui allouait la mémoire. Ce n'est pas
la valeur de la valeur du pointeur. La valeur du pointeur sera également une adresse, ce sera l'adresse de num.
Alors ici, imprimons d'abord num. Donc, ici,
nous allons simplement imprimer l'adresse numérique est.
Et encore une fois, nous voulons imprimer une adresse par exemple pour cent p.
Et puis nous allons dire l'adresse
de l'adresse de num.
Et l'adresse de num doit également correspondre à la valeur de pnum.
L'adresse de pnum sera différente car c'est le pointeur en mémoire.
Nous allons donc imprimer la valeur de pnum
ou je devrais dire l'adresse de pnum.
Et puis
nous allons également imprimer la valeur du pnum.
variable et ce sera également une adresse, et ce
sera juste pnum.
Et puis la dernière chose que nous voulons
afficher est que nous voulons afficher la valeur vers laquelle pointe pnum.
Donc la valeur de ce que pointe pnum.
Et ce sera en fait le type vers lequel
il pointe est un entier. Ce serait donc pour cent d.
Et ajoutons en fait quelques sauts de ligne pour que nous puissions lire ceci.
Et ce qui indique en fait la façon dont vous obtenez cette valeur, c'est l'opérateur d'indirection.
Vous faites donc l'astérisque puis le nom du pointeur.
Et cela va vous dire ce que la valeur pointe vers laquelle devrait être 150.
Donc, pour répéter ici à la ligne
11, nous imprimons l'adresse de num.
Cela va être un nombre ou un nombre hexadécimal.
Ensuite, à la ligne 12, nous imprimons l'adresse de pnum,
qui vient d'être allouée à la
ligne 7 parce que vous devez stocker le pointeur pnum quelque part.
Ensuite, nous imprimons la valeur du pointeur qui est juste l'adresse de num.
Et lorsque nous imprimons l'adresse de pnum, nous devons utiliser l'esperluette.
Et puis nous imprimons la valeur de ce
que pointe pnum qui est déréférencé en utilisant l'opérateur d'indirection.
Alors maintenant, allons-y, construisons ceci
et exécutons-le et nous devrions voir toutes ces valeurs.
Ainsi, l'adresse
numérique de ce numéro en mémoire est 0060FF0C.
L'adresse de pnum sera quelque
chose de différent, 0060FF08.
La valeur de pnum qui est l'adresse de num doit correspondre à la première
ligne et elle fait FFOC.
Et puis la valeur de ce que pointe pnum est 150.
Ainsi, un pointeur peut vraiment avoir trois valeurs. Son adresse, la valeur
du pointeur qui est une autre adresse et
ensuite la valeur de ce vers quoi cette adresse pointe.
Et encore une fois, esperluette vous donne toujours
l'adresse en mémoire.
Pnum contient une adresse. Vous pouvez l'imprimer simplement
en prononçant le nom du pointeur.
Et puis pour obtenir la valeur vers laquelle il pointe, vous utilisez l'opérateur
d'indirection, l'astérisque et cela vous donnera cette valeur qui est 150.
Voici donc les bases des pointeurs, vous permettant de vous familiariser avec la syntaxe.
Quand utiliser l'adresse de l'opérateur et quand utiliser l'opérateur
d'indirection, puis essayer d'expliquer simplement ce concept de pointeur et comment un pointeur
contient une valeur d'adresse, la valeur d'un pointeur est une adresse.
Alors jouez avec ça, comprenez
cette syntaxe, les pointeurs sont un concept vraiment important. Merci.