Examinons les rapports suivants :
int var_x;
int* ptrX;
var_x = 6;
ptrX = &var_x;
*ptrX = 12;
printf("value of x : %d", var_x);
La première ligne fait réserver le compilateur un espace dans la mémoire pour un nombre entier. La deuxième ligne indique le compilateur réserver l'espace pour stocker un indicateur.
Un indicateur est un endroit de stockage pour une adresse. La troisième ligne devrait vous rappeler les rapports de scanf. L'adresse « et » l'opérateur indique le compilateur aller à l'endroit qu'il a stocké le var_x, et puis donne l'adresse de l'endroit de stockage au ptrX.
L'astérisque * devant une variable dit le compilateur de déréférencier l'indicateur, et va à la mémoire. Alors vous pouvez faire des tâches à la variable stockée à cet endroit. Vous pouvez mettre en référence une variable et accéder à ses données par un indicateur. Voyons un exemple des indicateurs :
/* illustration of pointer use */
#include <stdio.h>
int main()
{
int index, *pt1, *pt2;
index = 39; /* any numerical value */
pt1 = &index; /* the address of index */
pt2 = pt1;
printf("The value is %d %d %d\n", index, *pt1, *pt2);
*pt1 = 13; /* this changes the value of index */
printf("The value is %d %d %d\n", index, *pt1, *pt2);
return 0;
}
Le rendement du programme sera montré comme suit :
The value is 39 39 39
The value is 13 13 13 |
|