NewbieContest

Programmation => Langages compilés => Discussion démarrée par: comtezero le 01 Octobre 2005 à 17:08:25



Titre: [C/C++] pointeurs
Posté par: comtezero le 01 Octobre 2005 à 17:08:25
Une question que je me pose, a quoi peuvent bien servir les pointeurs en c/c++, si ca simplifie ou autre les programmes ?


Titre: [C/C++] pointeurs
Posté par: Nox le 01 Octobre 2005 à 18:05:42
Les pointeurs servent a reserver un espace memoire pour des données

lorsque tu creer une variable les données contenu forment un tableau

chaque case du tableau et mise sur la pile

lorsque tu utilise un pointeur au lieu de mettre chaque lettre par exemple les une a la suite des autre le pointeur contiendra tout le texte ce qui augmente la vitesse de traitement =)

Pile N°1                       Pile N°2

B                                Bonjour
o                                Maurice                       Seulement deux traitement pour la pile 2
n
j
o
u
r
\n
M
a
u
r
i
c
e
\n


Titre: [C/C++] pointeurs
Posté par: comtezero le 01 Octobre 2005 à 18:19:26
Ok je vois on gagne du temps de traitements, apres c'est aussi facile a faire des programmes sur les pointeurs que sur les tableaux "normaux" ?


Titre: [C/C++] pointeurs
Posté par: Nox le 01 Octobre 2005 à 18:48:17
Tu peux faire un tableau sur un pointeur aussi =)

Dans certain cas tu es obligé d'utiliser de pointeurs parce que la fonction le demande

Bien sur mon schema etait trés simplifié mais en gros c'est ça


Titre: [C/C++] pointeurs
Posté par: comtezero le 01 Octobre 2005 à 20:01:48
Ok merci deja ca m'éclaire sur l'utilité du popinteur car deja je trouvais que ca rendais un script plus complexe au niveau de l'écriture et j'en voyais pas l'utilité.:oops


Titre: [C/C++] pointeurs
Posté par: Invit le 02 Octobre 2005 à 15:36:54
Arrff... L'informatique ça se résume à ça, des pointeurs et des valeurs.
Un pointeur c'est une adresse mémoire (symbolisée par une variable), une valeur c'est une valeur (peu pas faire mieux là...)
Et la totalité de l'informatique se résume à ça (bon bon ok... interruptions et entrées/sorties mises à part :p).


Titre: [C/C++] pointeurs
Posté par: neoflo le 11 Décembre 2005 à 12:18:13
Si tu définis une structure, par exemple d'un type image et un type couleur style:

typedef Couleur_ struct {
  int R; int G; int B; int T;
  } Couleur;

typedef Image_ sruct {
   int hauteur;
   int largeur;
   Couleur **m (ou Couleur* m)
} Image;

Dejà, si ds ta structure tu voulais utiliser un tableau, tu serais obligé de définir la taille du style Couleur m[256][256] et donc tu serais limité, et si l'on déclare un tableau comme ça, on ne peut plus redimensionner l'image. Donc, tu dois utiliser un pointeur de pointeur.

Ensuite, si tu veux utiliser une fonction qui par exemple réalise un gauffrage ou une rotation de ton image.
Et bien si tu lui envois la structure ds la gueule, ta pile va déborder. Encore là, on travaille avec un pointeur de type Couleur, dc ça ne devrait pas trop être grave, mais si ta fonction renvoit une image, et bien là, à coup sûr, ça va planter si tu ne fais pas d'allocation dynamique.

NB: Sous linux, si vous voulez voir la taille de votre pile (CAD ce qu'il n faut pas dépasser), il suffit de tapper ulimit -a et lire la ligne stack size

Par exemple, si tu fais une alloc dynamique, tu vas avoir un prototype du style:
Image * Rotation(Image* source, int angle);
Et là, ça sera bcp plus rapide car le passage des paramètres se fera avec 2 pointeurs d'image et d'un entier.

Alors que si tu fais:
Image Rotation(Image source, int angle)
Il va y avoir un recopiage des données sur la pile = perte de tps et risque de plantage