Les pointeurs

Introduction

Un pointeur est une variable qui contient l'adresse d'une autre variable. La valeur du pointeur est donc l'adresse d'une zone mémoire qui peut contenir des données (pointeur de données) ou du code (pointeur de fonction).

Par exemple, au moment de la déclaration de la variable chiffre (int chiffre;), de la mémoire est allouée pour cette variable, à un emplacement réservé, désigné de manière unique par son adresse.

Au moment de l'affectation d'une valeur à cette variable (chiffre = 3;), cette valeur sera stockée dans la mémoire à l'emplacement réservé.
Comme cet emplacement (adresse) est aussi un nombre (dont la taille maximum dépend des machines), il est possible de stocker ce nombre dans une autre variable. Cette dernière variable est un pointeur (qui contient donc l'adresse d'une autre variable...).

Déclaration

Syntaxe

Type *identificateur;

  • Type: type de variable.
    Comme une variable de type pointeur contient un nombre qui représente une adresse, nous devons indiquer le type de la variable contenue à cette adresse.
  • identificateur: nom de la variable pointeur.
    L'identificateur est précédé de l'opérateur * qui indique que l'on parle de l'objet pointé.

Exemple

int *px;

Par cette instruction, nous déclarons que l'objet pointé par px est un entier (int).
Il sera donc inutile par la suite de tenter d'y substituer un objet de type caractère.

L'opérateur &

Il est possible d'assigner l'adresse d'une variable préalablement définie:

char lettre;
char *pointeur;
pointeur = &lettre;

Explications

L'opérateur & renvoie l'adresse mémoire de la variable à laquelle il est appliqué.
Dans notre exemple, pointeur pointe donc sur la variable lettre, puisqu'il en contient l'adresse.

Tableau des opérateurs

Symbole*&
NomOpérateur d'indirectionOpérateur de calcul d'adresse
DescriptionConsidère son opérande comme l'adresse du dernier destinataire, seulement pour son contenu.
Il permet donc d'accéder à la zone pointée par le pointeur.
Nous fournit l'adresse d'une variable.
Exemplex = *px;px = &x;

Remarques

  • Si a et b sont deux pointeurs,
    • a = b fait pointer a sur la même case mémoire que b.
  • Un pointeur en C n'est pas simplement une référence, il contient réellement l'adresse d'une variable.
  • Attention: si a est un pointeur,
    • a++ n'incrémente pas la valeur de la variable pointée par a, mais incrémente bien la valeur de a.
    • Il en résulte que a pointe sur la variable stockée dans l'emplacement mémoire suivant.
    • Comme nous ne savons pas ce qui se trouve à cette adresse, ce type d'opération peut se révéler très dangereux.
      Sous Unix, chaque processus est isolé, ayant son propre espace d'adressage. Le programme renvoie le message "segmentation fault" afin d'éviter que le processus ne puisse écrire dans un autre espace mémoire, ce qui pourrait conduire à un sérieux plantage système.

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

6 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-95
Document créé le 19/03/02 01:00, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http:///www.gaudry.be/c-pointeur.html
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15838 documents
455 astuces.
550 niouzes.
3107 definitions.
447 membres.
8121 messages.

Document genere en :
0,10 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
C'est drôle ce besoin qu'ont les gens d'accuser les autres d'avoir gâché leur existence. Alors qu'ils y parviennent si bien eux-mêmes, sans l'aide de quiconque.

Amélie Nothomb
 
l'infobrol
Nous sommes le Samedi 19 Août 2017, 00:04, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)