PDA

Voir la version complète : Les pointeurs a quoi sa sert ?


Chips Lay's
18/10/2006, 02h58
Bonsoir

Bon voila j'apprend le c/c++ et j'arrive à la partie sur les pointeurs et je ne comprend pas à quoi sa sert donc si quelqu'un peut m'expliquer clairement a quoi sa sert merci d'avance .

Costello
18/10/2006, 07h18
Pour apprendre le C à ton âge faut avoir du courage (ça rime) donc bonne chance.

La mémoire d'un système est adressable, c'est à dire qu'on range plein de données dedans, et pour s'y retrouver on utilise des "adresses". Par exemple quand tu as une variable "age", de type entier (int), et bien dans la mémoire de ton ordinateur il y aura 4 octets (en général un int c'est 4 octets) dans la mémoire qui seront alloués pour stocker la valeur de la variable. Par exemple si "age=15", cette valeur sera écrite dans la mémoire à l'emplacement réservé pour la variable "age".

Un pointeur, c'est une variable... dans laquelle on stocke une adresse!
Donc un pointeur qui pointe sur la variable "age", c'est un espace mémoire dans lequel on écrit l'adresse de cette variable.

Exemple:
un petit bout de code en C:

#include <stdio.h>

int main() {
int age = 15;
int *pt_age = &age;

printf("age: %d \n",age);
printf("adresse de age: %d \n",pt_age);
printf("valeur de age en utilisant le pointeur: %d \n",*pt_age);

return 0;
}


- Pour déclarer un pointeur, c'est comme pour déclarer une variable sauf qu'on met un * après le type. Ici "int *pt_age".
- Pour l'affecter, tu lui donne l'adresse de la variable sur laquelle tu veux pointer. La syntaxe est: "pt_age = &age". Le caractère & est utilisé pour récupérer l'adresse d'une variable.
- Pour utiliser la valeur de la variable pointée par le pointeur, tu dois utiliser le caractère * devant le nom du pointeur. Dans l'exemple, j'ai affiché la valeur de "age" en utilisant le pointeur "pt_age", et pour faire cela j'ai fait un printf() avec comme argument "*pt_age", donc la valeur de "age".

A quoi ça sert? Et bien ça sert très souvent pour des tas de choses, tu verras!
Un exemple simple. Mettons que tu aies une grosse structure de données, une structure représentant un jeu DS commercial pour réaliser un catalogue par exemple. Pour représenter un jeu, il faut plein d'informations comme son nom, son numéro de série, sa date de sortie. Jusque là, facile, il suffit d'utiliser des variables (nom=chaine, serial=chaine, date de sortie=date...).
Mais dans ton catalogue, tu veux également répertorier les éditeurs de jeux, en mettant leur nom, leur numéro de téléphone, l'adresse de leur siège.
Pour faire le lien entre un jeu et son éditeur, tu vas faire comment?
Et bien tu vas utiliser un pointeur!
La structure "jeu" va avoir un attribut de type pointeur qui va pointer sur une structure "editeur". De cette manière, tu pourras:
1) accéder directement aux informations sur l'instance de la structure "editeur" en utilisant le caractère *,
2) lorsque cet "éditeur" sera mis à jour (par exemple changement d'adresse ou de tel.) tu n'auras pas besoin de mettre à jour chaque "jeu" de cet "editeur".

Bon je vais m'arrêter là.
La suite ici:
http://c.developpez.com/faq/c/
http://c.developpez.com/cours/
et tout ce que tu trouveras sur http://developpez.com :)

ps: c'était écrit mon premier post utile depuis que je suis arrivé sur Playeradvance il y a 5 ans :D ... enfin j'espère qu'il est utile hein

snk4ever
18/10/2006, 08h14
Non seulement il est utile, mais en plus il est à la fois simple et pédagogique pour un truc pas si simple à comprendre.

Charly
18/10/2006, 11h04
ouais nickel Costello c'est très clair ton explication :)

Dr.Vince
18/10/2006, 12h36
tu peux aussi commencer à lire les règles de la section AIDE : http://www.playeradvance.org/forum/showthread.php?t=4573

>( >( >(

Chips Lay's
18/10/2006, 20h22
Merchi Costello :)
alala mais Dr.Vince je savais pas me cri po dessu :hum: :p