L'essentiel du langage C

Prendre en main les pointeurs et les adresses

Testez gratuitement nos 1324 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Abordez la notion de contenu d'une variable et de son adresse. Les pointeurs vont vous permettre de dissocier ces deux notions.
05:56

Transcription

Nous allons aborder le point très important du langage C qui est le pointeur et l'adressage. L'adressage en lui-même, pas forcément, mais le pointeur est directement lié à l'adressage Avant d'aller plus loin en fait, le pointeur est un outil très puissant, mais seulement, il faut pouvoir bien comprendre son utilité et sa limite de validité C'est, en général, le point le plus compliqué lorsque l'on commence la programmation et il est rare de comprendre pour la première fois à quoi sert un pointeur. Nous allons simplement déjà évoquer sa fonctionnalité. L'adressage d'une variable Elle peut se faire de façon directe ou indirecte, c'est-à-dire que la variable, vous pouvez très bien l'imposer par le biais du compilateur. Chose que nous, nous ne verrons pas puisque nous ne sommes pas dans cet objectif, mais vous pouvez très bien dire à une variable : "tu vas te mettre l'adresse 0 X 8000 de ma mémoire RAM" C'est terminé, elle est fixée. C'est vous qui avez dit au compilateur : "je t'impose de faire ça", ou vous avez la possibilité de le faire de façon indirecte. Dans ce cas-là, c'est-à-dire que c'est le compilateur qui va se charger pour vous d'effectuer la mise en place de cette variable à l'adresse qui lui va bien. Voyons un peu l'organisation dans la mémoire. Imaginons qu'ici, nous ayons toutes nos adresses qui sont empilées. Nous avons fait appel à plusieurs variables de type char donc cela veut dire que nos adresses commencent par exemple à 10000 Nous réservons 8 bits pour pouvoir quand même placer le contenu de notre variable 8 bits derrière, et ainsi de suite. Supposant que là, nous avons placé deux variables de type char et que notre compilateur les a mis les unes derrière les autres. Dans ce cas-là, nous avons en fait un adressage qui est direct, c'est-à-dire char = 10 donc le compilateur a placé à l'adresse qui lui convenait mieux. Par exemple, celle-ci 10007, la valeur 10 Si on ne peut pas accéder directement à la valeur de A, on peut utiliser un pointeur. Un pointeur, retenez juste sa définition, c'est une variable qui est une variable comme les autres sauf qu'elle a la particularité de recevoir l'adresse d'une autre variable. Je répète, une variable contient une valeur. Un pointeur contient l'adresse d'une autre variable Exemple ici, donc, nous sommes sur une sorte d'adressage indirecte Exemple : Char A = 10 J'écris char *P=NULL Je vais l'expliquer juste après. Le pointeur reçoit l'adresse de A Dans notre organisation mémoire qui est ici, ça veut simplement dire que P reçoit quoi ? L'adresse de la valeur A qui stocke en son sein 10 Vous n'allez pas forcément comprendre l'intérêt de tout cela, mais nous allons faire plusieurs exemples, programmés de façon à essayer de vous faire pointer du doigt, l'intérêt de tout ceci ? En tout cas, ce qu'il faut toujours effectuer. Un pointeur doit toujours être initialisé, soit vous lui mettez la valeur 0, soit vous écrivez de façon explicite NULL car NULL, en fait, est une macro qui est dans stdlib.h dans laquelle en fait, NULL = 0 Donc, voilà, ça revient à mettre 0 Et il faut absolument que le pointeur soit du même type que la variable sur laquelle il pointe Vous ne pouvez pas faire pointer un pointeur de type char sur un int, Ça ne fonctionne pas. Je reviens en arrière pour réexpliquer. En fait, vous stockez l'adresse de départ, mais vous stockez aussi tout ce qu'il y a derrière c'est-à-dire que pourquoi votre pointeur doit être de type char ? si la valeur sur laquelle vous pointez est de type char, c'est simplement parce que vous devez stockés les 8 bits Donc en fait, il vous donne la valeur de l'adresse de départ, mais il faut penser aussi aux qui sont derrière. Forcément, cette condition est une condition qui n'est que logique Vous ne pouvez pas faire pointer des variables de type différent. C'est un non-sens. Donc, pour la syntaxe, si vous voulez obtenir l'adresse d'une variable, vous mettez le "et" commercial, nom de la variable ; si vous voulez obtenir le contenu de l'adresse pointée de la variable, vous mettez : type *nom_de_pointeur À partir de là, vous allez obtenir donc l'adresse pointée. Voilà, j'espère que j'ai été suffisamment clair. Et c'est vrai peut-être un petit peu insistant, mais c'est un point qui est vraiment, extrêmement délicat dans le langage C lorsque l'on débute et c'est pour cela que nous allons voir dans les prochains tutoriaux plusieurs exemples détaillés de façon à vous familiariser avec les pointeurs.

L'essentiel du langage C

Comprenez les concepts de base du langage C. Développez de simples applications en mode console, afin de comprendre les rouages d’un des langages les plus utilisés au monde.

7h51 (98 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :12 janv. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !