Pointeur sur pointeur en C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En programmation C, les pointeurs sont utilisés pour stocker les adresses mémoire d'autres variables. De même, un pointeur sur un pointeur est une variable qui stocke l'adresse mémoire d'une autre variable pointeur. Dans ce laboratoire, nous allons apprendre à écrire un programme C qui traite les pointeurs sur pointeurs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123305{{"Pointeur sur pointeur en C"}} c/operators -.-> lab-123305{{"Pointeur sur pointeur en C"}} c/pointers -.-> lab-123305{{"Pointeur sur pointeur en C"}} c/memory_address -.-> lab-123305{{"Pointeur sur pointeur en C"}} c/output -.-> lab-123305{{"Pointeur sur pointeur en C"}} end

Déclarer les variables nécessaires

Dans cette étape, nous allons déclarer trois variables ; var, *ptr et **pptr.

int var;
int *ptr;
int **pptr;

Affecter une valeur à la variable var

Dans cette étape, nous allons affecter une valeur à la variable var.

var = 50;

Affecter l'adresse de var au pointeur ptr

Dans cette étape, nous allons affecter l'adresse de la variable var au pointeur ptr.

ptr = &var;

Affecter l'adresse de ptr au pointeur sur pointeur pptr

Maintenant, nous allons affecter l'adresse du pointeur ptr au pointeur sur pointeur variable pptr.

pptr = &ptr;

Accéder à la valeur à l'aide de pptr

Enfin, nous allons accéder à la valeur de var à l'aide du pointeur sur pointeur variable pptr.

printf("\nValeur de var = %d\n", var);
printf("\nValeur disponible à *ptr = %d\n", *ptr);
printf("\nValeur disponible à **pptr = %d\n", **pptr);

La première instruction printf affichera la valeur de la variable var.

La deuxième instruction printf affichera la valeur disponible à l'adresse mémoire stockée dans ptr, qui devrait être la valeur de var.

La troisième printf affichera la valeur disponible à l'adresse mémoire stockée dans pptr, qui devrait être la valeur de ptr, puis en déréférant deux fois pour obtenir la valeur de var.

Écrire le code complet dans main.c

Maintenant que nous avons parcouru les différentes étapes, nous pouvons rassembler le code dans la fonction main de main.c.

#include <stdio.h>

int main()
{
    int var;
    int *ptr;
    int **pptr;

    var = 50;

    ptr = &var;

    pptr = &ptr;

    printf("Valeur de var = %d\n", var);
    printf("Valeur disponible à *ptr = %d\n", *ptr);
    printf("Valeur disponible à **pptr = %d\n", **pptr);

    return 0;
}

Sommaire

Dans ce laboratoire étape par étape, nous avons appris à écrire un programme C qui traite des pointeurs sur pointeurs. Nous avons déclaré les variables nécessaires, affecté une valeur à la variable, affecté l'adresse de la variable au pointeur, affecté l'adresse du pointeur au pointeur sur pointeur et finalement accédé à la valeur de la variable à l'aide du pointeur sur pointeur. Être familier avec les pointeurs sur pointeurs est une étape cruciale dans l'apprentissage de la programmation C.