Pointeurs en programmation C avec des exemples

Un pointeur est une variable qui stocke ladresse dune autre variable. Contrairement à dautres variables qui contiennent des valeurs dun certain type, le pointeur contient ladresse dune variable. Par exemple, une variable entière contient (ou vous pouvez dire stocke) une valeur entière, cependant un pointeur entier contient ladresse dune variable entière. Dans ce guide, nous discuterons des pointeurs en programmation C à laide dexemples.

Avant de discuter des pointeurs en C, prenons un exemple simple pour comprendre ce que nous entendons par ladresse dune variable.

Un exemple simple pour comprendre comment accéder à ladresse dune variable sans pointeurs?

Dans ce programme, nous avons une variable num de type int. La valeur de num est 10 et cette valeur doit être stockée quelque part dans la mémoire, non? Un espace mémoire est alloué pour chaque variable qui contient la valeur de cette variable, cet espace mémoire a une adresse. Par exemple, nous vivons dans une maison et notre maison a une adresse, ce qui aide dautres personnes à trouver notre maison. De la même manière que la valeur de la variable est stockée dans une adresse mémoire, ce qui aide le programme C à trouver cette valeur quand il est nécessaire.

Donc, disons que ladresse affectée à la variable num est 0x7fff5694dc58, ce qui signifie que la valeur que nous attribuerions à num doit être stockée à lemplacement: 0x7fff5694dc58. Voir le diagramme ci-dessous.

Sortie:

Value of variable num is: 10Address of variable num is: 0x7fff5694dc58

Un exemple simple de pointeurs en C

Ce programme montre comment un pointeur est déclaré et utilisé. Il y a plusieurs autres choses que nous pouvons faire avec les pointeurs, nous en avons discuté plus loin dans ce guide. Pour linstant, nous avons juste besoin de savoir comment lier un pointeur à ladresse dune variable.

Le point important à noter est: Le type de données du pointeur et la variable doit correspondre, un pointeur int peut contenir ladresse de la variable int, de même un pointeur déclaré avec le type de données float peut contenir ladresse dune variable float. Dans lexemple ci-dessous, le pointeur et la variable sont tous deux de type int.

Sortie:

Address of variable num is: 0x7fff5694dc58

Pointeurs C – Opérateurs utilisés avec les pointeurs

Discutons des opérateurs & et * qui sont utilisés avec les pointeurs en C.

Opérateur « Adresse de » (&)

Nous avons déjà vu dans le premier exemple que nous pouvons afficher ladresse dune variable en utilisant une esperluette Jai utilisé & num pour accéder à ladresse de la variable num. Lopérateur & est également connu sous le nom dopérateur « Address of ».

printf("Address of var is: %p", &num);

À noter:% p est un spécificateur de format utilisé pour afficher ladresse au format hexadécimal.
Vous savez maintenant comment obtenir ladresse dune variable mais comment stocker cette adresse dans une autre variable? C’est là que les pointeurs entrent en scène. Comme mentionné au début de ce guide, les pointeurs en programmation C sont utilisés pour contenir ladresse dune autre variable.

Le pointeur est comme une autre variable, la principale différence est quil stocke ladresse dune autre variable plutôt que une valeur.

Opérateur « Valeur à ladresse » (*)

Lopérateur * est également appelé opérateur Valeur à ladresse.

Comment déclarer un pointeur ?

Voici les quelques exemples de déclarations de pointeur. Si vous avez besoin dun pointeur pour stocker ladresse de la variable entière, le type de données du pointeur doit être int. Le même cas est avec les autres types de données.

En utilisant lopérateur *, nous pouvons accéder à la valeur dune variable via un pointeur.
Par exemple:

double a = 10;double *p;p = &a;

* p nous donnerait la valeur de la variable a. Linstruction suivante afficherait 10 en sortie.

printf("%d", *p);

De même si nous attribuons une valeur au pointeur * comme ceci:

*p = 200;

Cela changerait la valeur de v ariable a. Linstruction ci-dessus changera la valeur de a de 10 à 200.

Exemple de pointeur démontrant lutilisation de & et *

Sortie :

Value of variable var is: 10Value of variable var is: 10Address of variable var is: 0x7fff5ed98c4cAddress of variable var is: 0x7fff5ed98c4cAddress of pointer p is: 0x7fff5ed98c50

Prenons quelques exemples supplémentaires pour mieux le comprendre –
Disons que nous avons une variable char ch et un pointeur ptr qui contient ladresse de ch.

char ch="a";char *ptr;

Lire la valeur de ch

printf("Value of ch: %c", ch);orprintf("Value of ch: %c", *ptr);

Changer la valeur de ch

ch = "b";or*ptr = "b";

Le code ci-dessus remplacerait la valeur a par b .

Pouvez-vous deviner la sortie du programme C suivant?

Sortie:

Address of var is: 0x7fff5d027c58Address of var is: 0x7fff5d027c58Value of var is: 10Value of var is: 10Value of var is: 10Value of pointer p is: 0x7fff5d027c58Address of pointer p is: 0x7fff5d027c50

Plus de sujets sur les pointeurs

1) Pointeur vers pointeur – Un pointeur peut pointer vers un autre pointeur (ce qui signifie quil peut stocker ladresse dun autre pointeur), ces pointeurs sont connus sous le nom de double pointeur OU pointeur vers pointeur.

2) Passer des pointeurs à une fonction – Les pointeurs peuvent également être passés comme argument à une fonction, en utilisant cette fonctionnalité une fonction peut être appelée par référence ainsi quun tableau peut être passé à une fonction lors de lappel.

3) Pointeurs de fonction – Un pointeur de fonction est comme un autre pointeur, il est utilisé pour stocker ladresse dune fonction. Le pointeur de fonction peut également être utilisé pour appeler une fonction dans un programme C.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *