Question #5503   Proposée par Answiki le 13/12/2021 à 18:28:26 UTC

Comment fonctionne les pointeurs dans le langage C ?

Answer   Submitted by Answiki on 12/13/2021 at 06:30:30 PM UTC

En C, un pointeur représente l'adresse d'une variable, c'est-à-dire l'adresse de cette variable dans la mémoire. Il y a quelques notion de syntaxe à connaître pour pouvoir utiliser les pointeurs :


Le caractère * utilisé à la déclaration permet de déclarer un pointeur :

// Déclare un pointeur vers une variable de type entier
int *pVal;
// Déclare un pointeur vers une variable de type flotant
float *pReal;

Le caractère & permet de récupérer l'adresse d'une variable (c'est-à-dire un pointeur vers cette variable) :

// On affecte l'adresse de la variable val au pointeur pVal:
pVal = &val;
// On affiche l'adresse de la variable pReal :
printf ("%p", &preal);

Enfin, le caractère * utilisé hors déclaration permet de manipuler le contenu de la variable pointée par le pointeur :

// On affecte 5 à la variable pointée par pVal (équivalent à val = 5) 
*pVal = 5;
// Affiche la variable pointée par le pointeur pVal (affiche 5) :
printf ("%d", *pVal);

Voici un exemple complet qui synthétise l'utilisation des pointeurs :

// Programme d'exemple sur les pointeurs
#include <stdio.h>

int main()
{
    // Déclare une variable val et lui affecte la valeur 256 et un pointer pVal
    int val=256, *pVal;
    
    // On affecte l'adresse de val au pointer pVal
    // pVal prend pour valeur l'adresse de val
    pVal = &val;
    
    // Affiche la valeur de la variable val (256)
    printf ("Variable val = %d\n", val);
    
    // Affiche l'adresse mémoire de la variable val 
    printf ("Adresse de val = %p\n", &val);
    
    // Affiche l'adresse contenue dans le pointer pVal
    printf ("Adresse contenue dans le pointeur pt = %p\n", pVal);
    
    // Affiche la valeur pointée par pVal (ici la variable val, donc 256)
    printf ("Valeur pointée par pointeur = %d\n", *pVal);
    
    return 0
}

Ce programme affiche la sortie suivante (notez que les adresses en mémoire peuvent changer) :

Variable val = 256                                                                                                                                    
Adresse de val = 0x7ffd4a9d70dc                                                                                                                       
Adresse contenue dans le pointeur pt = 0x7ffd4a9d70dc                                                                                                 
Valeur pointée par pointeur = 256


6 events in history
Answer by Answiki on 12/13/2021 at 06:30:30 PM

En C, un pointeur représente l'adresse d'une variable, c'est-à-dire l'adresse de cette variable dans la mémoire. Il y a quelques notion de syntaxe à connaître pour pouvoir utiliser les pointeurs :


Le caractère * utilisé à la déclaration permet de déclarer un pointeur :

// Déclare un pointeur vers une variable de type entier
int *pVal;
// Déclare un pointeur vers une variable de type flotant
float *pReal;

Le caractère & permet de récupérer l'adresse d'une variable (c'est-à-dire un pointeur vers cette variable) :

// On affecte l'adresse de la variable val au pointeur pVal:
pVal = &val;
// On affiche l'adresse de la variable pReal :
printf ("%p", &preal);

Enfin, le caractère * utilisé hors déclaration permet de manipuler le contenu de la variable pointée par le pointeur :

// On affecte 5 à la variable pointée par pVal (équivalent à val = 5) 
*pVal = 5;
// Affiche la variable pointée par le pointeur pVal (affiche 5) :
printf ("%d", *pVal);

Voici un exemple complet qui synthétise l'utilisation des pointeurs :

// Programme d'exemple sur les pointeurs
#include <stdio.h>

int main()
{
    // Déclare une variable val et lui affecte la valeur 256 et un pointer pVal
    int val=256, *pVal;
    
    // On affecte l'adresse de val au pointer pVal
    // pVal prend pour valeur l'adresse de val
    pVal = &val;
    
    // Affiche la valeur de la variable val (256)
    printf ("Variable val = %d\n", val);
    
    // Affiche l'adresse mémoire de la variable val 
    printf ("Adresse de val = %p\n", &val);
    
    // Affiche l'adresse contenue dans le pointer pVal
    printf ("Adresse contenue dans le pointeur pt = %p\n", pVal);
    
    // Affiche la valeur pointée par pVal (ici la variable val, donc 256)
    printf ("Valeur pointée par pointeur = %d\n", *pVal);
    
    return 0
}

Ce programme affiche la sortie suivante (notez que les adresses en mémoire peuvent changer) :

Variable val = 256                                                                                                                                    
Adresse de val = 0x7ffd4a9d70dc                                                                                                                       
Adresse contenue dans le pointeur pt = 0x7ffd4a9d70dc                                                                                                 
Valeur pointée par pointeur = 256


Question by Answiki 12/13/2021 at 06:28:26 PM
Comment écrire une instruction avec les pointeurs ?
Question by Answiki 12/13/2021 at 06:28:26 PM
Comment faire un programme en c avec les pointeurs
Question by Answiki 12/13/2021 at 06:28:26 PM
Comment faire un programme en C avec les pointeurs ?
Question by Answiki 12/13/2021 at 06:28:26 PM
Comment fonctionne les pointeurs dans le langage C ?
Question by Answiki 12/13/2021 at 06:28:26 PM
Comment fonctionne les pointeurs en C ?
# ID Query URL Count

Icons proudly provided by Friconix.