Pas encore membre?


Leçon 8 Les pointeurs
index des tutoriaux >> C - SDK [ graph85 ] >> Leçon 8 Les pointeurs posté le 30/09/2007 à 16:45

PierrotLL

MP / Email
Informations:

Leçon 8 Les pointeurs
posté le 30/09/2007 à 16:45
par PierrotLL

permalien:

Leçon n°8: Les pointeurs
Le concept de pointeur est tres important dans la programmation et particulièrement en C. C'est souvent expliqué comme un truc compliqué alors qu'en fait c'est tres simple et tres utile. Malheureusement, peu de programmeurs savent bien les utiliser.




I - Qu'est ce qu'un pointeur?

Un pointeur est une variable un peu spécial. En fait, elle ne contient pas une valeur, mais une adresse en mémoire, l'adresse d'une autre variable.

La mémoire vive de la calculatrice comme celle d'un ordinateur est une sorte de grande liste, dont chaque case contient une valeur. Une case, c'est un octet (byte en anglais ) et chaque case a une adresse. Si on connais l'adresse d'une variable, on peut la modifier.

II - Comment créer un pointeur?

Pour créer un pointeur qui contiendra l'adresse d'un int, il faut écrire :
Code: int *monPointeur;

Il suffit de rajouter une étoile avant le nom du pointeur
Attention, un pointeur sur char doit contenir l'adresse d'un char, et un pointeur sur int doit contenir l'adresse d'un int!!

III - Assigner une valeur a un pointeur

Maintenant, que doit on mettre dans notre pointeur? L'adresse d'une variable bien sur!
Pour récupérer l'adresse d'une variable, on utilise le signe '&' comme ceci:
Code: int maVariable, *pointeurSurMaVariable;
pointeurSurMaVariable = &maVariable;
Et voila, maintenant pointeurSurMaVariable contient l'adresse de maVariable.

Maintenant on peut lire la valeur que contient maVariable en écrivant *pointeurSurMaVariable.
Exemple:
Code: int AddIn_main(int isAppli, unsigned short OptionNum)
{
int maVariable = 2, *pointeurSurMaVariable, key;
pointeurSurMaVariable = &maVariable;

*pointeurSurMaVariable = 5;
locate(1, 1);
if(maVariable == 5)
Print("maVariable = 5");
GeyKey(&key);
return 1;
}
Essayez ce code, vous verrez qu'il affiche bien "maVariable = 5". On a donc modifié la valeur de maVariable a partir de pointeurSurMaVariable.

Vous remarquerez d'ailleur que quand on appelle la fonction GetKey, on lui envoi l'adresse d'un int

Et si on envoi pointeurSurMaVariable a une autre fonction, celle ci poura alors modifier la valeur de maVariable.
Exemple:
Code: void triple(int *variable)
{
*variable *= 3;
}

int AddIn_main(int isAppli, unsigned short OptionNum)
{
int maVariable = 2, *pointeurSurMaVariable, key;
pointeurSurMaVariable = &maVariable;

triple(pointeurSurMaVariable);
locate(1, 1);
if(maVariable == 6)
Print("maVariable = 6");
GeyKey(&key);
return 1;
}
Ici je n'étais pas obligé de créer pointeurSurMaVariable, j'aurais pu envoyer a la fonction triple l'adresse de maVariable directement en faisant &maVariable


Leçon 8 Les pointeurs posté le 30/09/2007 à 16:45 par PierrotLL




http://top-progcasio.com V5.0 © par Bebe Vador 2005 - 2008 | il y a 2 personnes connectées | sitemap(txt) | sitemap(html) | sitemap(xml)