Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1681 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Mais...a quoi servent les pointeurs???

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

Mais...a quoi servent les pointeurs???

n°827777
lunarnet76
Posté le 20-08-2004 à 15:02:06  profilanswer
 

LUT!
J'ai actuellement un bon livre sur le C++, de la ressource internet etc... et j'ai beau lire tout ce qui concerne les pointeurs, ca me parait trés jolli mais... a quoi ca sert? Quand est-ce qu'on les utilises le + souvent? Parce que j'ai bien vu des endroits ou je pouvais m'en servir mais ou ca ne changer rien et ce n'était pas plus court alors....  
Ps: je rappel que je suis débutant!!!


---------------
!jb!
mood
Publicité
Posté le 20-08-2004 à 15:02:06  profilanswer
 

n°827780
chrisbk
-
Posté le 20-08-2004 à 15:03:52  profilanswer
 

Hé bien, plutot que de faire un long discours, je dirais juste  que lorsque tu en auras vraiment besoin, tu le verras tout seul. Tant que tu peux t'en passer, passe toi z'en.

n°827789
lunarnet76
Posté le 20-08-2004 à 15:13:44  profilanswer
 

ok ok !!! "chaque chose en son temps"  
mici


---------------
!jb!
n°827801
WhatDe
Posté le 20-08-2004 à 15:27:01  profilanswer
 

Les listes chaînées par exemple.

n°827804
blackgodde​ss
vive le troll !
Posté le 20-08-2004 à 15:27:42  profilanswer
 

qd tu en auras besoin, pense que les pointeurs intelligents existent (std::auto_ptr, boost::shared_ptr, ...)


---------------
-( BlackGoddess )-
n°827845
HelloWorld
Salut tout le monde!
Posté le 20-08-2004 à 15:45:47  profilanswer
 

Déjà, ça sert à créer dynamiquement des objets, ça sert au polymorphisme, ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°827853
chrisbk
-
Posté le 20-08-2004 à 15:49:02  profilanswer
 

HelloWorld a écrit :

Déjà, ça sert à créer dynamiquement des objets, ça sert au polymorphisme, ...


 
Comment achever un débutant, tome 1 [:joce]
laisse lui le tps, crediou :o

n°827902
jagstang
Pa Capona ಠ_ಠ
Posté le 20-08-2004 à 16:32:46  profilanswer
 

à quoi ça sert ? très simple.
 
tu me fais une fonction qui retourne le plus grand et le plus petit élément d'un tableau passé en param. tu verras bien ou est le problème
 
edit : entre autre hein, y'a pas que ça :o


Message édité par jagstang le 20-08-2004 à 16:33:02
n°827970
Ace17
Posté le 20-08-2004 à 17:37:42  profilanswer
 

JagStang a écrit :

à quoi ça sert ? très simple.
 
tu me fais une fonction qui retourne le plus grand et le plus petit élément d'un tableau passé en param. tu verras bien ou est le problème
 
edit : entre autre hein, y'a pas que ça :o


 

Code :
  1. const int TAB_SIZE = 40;
  2. struct type_de_retour
  3. {
  4.     int plus_petit;
  5.     int plus_grand;
  6. };
  7. type_de_retour parcourir_tableau(int tab[TAB_SIZE])
  8. {
  9.    type_de_retour a;
  10.    // .............
  11.    return a;
  12. }


 :D
Vas y Taz, défoule toi, c'était juste pour la déconne  :p


Message édité par Ace17 le 20-08-2004 à 17:39:31
n°828095
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-08-2004 à 21:28:36  profilanswer
 

JagStang a écrit :


tu me fais une fonction qui retourne le plus grand et le plus petit élément d'un tableau passé en param. tu verras bien ou est le problème


 
bool plusgrandpluspetit(const std::vector<int> tab, int &plusgrand, int &pluspetit);
 
un truc du genre (merci de pas me jeter des pierres)
 
y a pas de pointeurs, non ? :D


Message édité par antp le 20-08-2004 à 21:31:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 20-08-2004 à 21:28:36  profilanswer
 

n°828103
cris56
Posté le 20-08-2004 à 21:34:27  profilanswer
 

normal, le passage par reference permet justement de les eviter en c++, tout les exemples de passage en parametre ne valent que pour le c  il me semble

n°828211
lunarnet76
Posté le 21-08-2004 à 01:01:08  profilanswer
 

mais si je veux la plus petite valeur ou la plus grand je fais un ptit algorithme qui me les trouves,en quoi les pointeurs m'aide spécialement???


---------------
!jb!
n°828235
deltaden
Posté le 21-08-2004 à 02:48:26  profilanswer
 

le problème, c'est que tu veux une méthode qui trouve à la fois le plus petit et le plus grand, mais qu'une méthode ne peut renvoyer qu'une seule chose...
 
La solution est donc de passer à la méthode les deux adresses où elle doit stocker le min et max, en plus d elui passer le tableau :
 
void MinMax(int s, float * tab, float * min, float * max)
{
  .......
  *min = ....
  *max = ....
}


Message édité par deltaden le 21-08-2004 à 02:52:01
n°828237
lunarnet76
Posté le 21-08-2004 à 03:15:14  profilanswer
 

ah oui c vrai que ca peut servir!!!


---------------
!jb!
n°828278
antp
Super Administrateur
Champion des excuses bidons
Posté le 21-08-2004 à 11:01:14  profilanswer
 

y a le passage par référence pour éviter ça :o Cf mon post précédent


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°828284
LeGreg
Posté le 21-08-2004 à 11:13:40  profilanswer
 

les pointeurs ça ne sert.. à rien  
 
Mais en meme temps on peut rien faire sans eux..
 
Étonnant n'est-ce pas?

n°828287
Taz
bisounours-codeur
Posté le 21-08-2004 à 11:20:45  profilanswer
 

Ace17 a écrit :

Code :
  1. const int TAB_SIZE = 40;
  2. struct type_de_retour
  3. {
  4.     int plus_petit;
  5.     int plus_grand;
  6. };
  7. type_de_retour parcourir_tableau(int tab[TAB_SIZE])
  8. {
  9.    type_de_retour a;
  10.    // .............
  11.    return a;
  12. }


moi je vois bien un pointeur dans ton exemple

n°828312
WhatDe
Posté le 21-08-2004 à 12:37:37  profilanswer
 

Taz a écrit :

moi je vois bien un pointeur dans ton exemple


tab ?

n°828314
KangOl
Profil : pointeur
Posté le 21-08-2004 à 12:40:22  profilanswer
 

:jap:


---------------
Nos estans firs di nosse pitite patreye...
n°828317
Taz
bisounours-codeur
Posté le 21-08-2004 à 12:44:01  profilanswer
 

ben oui

n°828319
WhatDe
Posté le 21-08-2004 à 12:48:07  profilanswer
 


Ca veut dire que je progresse dans mon apprentissage alors, youpi :bounce:  
 
:D

n°828321
Taz
bisounours-codeur
Posté le 21-08-2004 à 12:50:35  profilanswer
 

t'as procédé par élimination. si je t'avais pas dit qu'il y en avait un, tu l'aurais pas trouvé

n°828322
WhatDe
Posté le 21-08-2004 à 12:52:20  profilanswer
 

Taz a écrit :

t'as procédé par élimination. si je t'avais pas dit qu'il y en avait un, tu l'aurais pas trouvé


Même pas j'ai tout de suite regardé ce tab...  :sarcastic:

n°828363
lunarnet76
Posté le 21-08-2004 à 14:14:59  profilanswer
 

bon ok tab c un pointeur mais bon je parlais surtt de tous les trucs avec &, * et compagnie, parce que sinon c sure les tableau je les utilises tout le temps!
et puis le fait de dire que avec les pointeurs on peut faire une fonction renvoyant plusieurs valeurs c vrai que c la meme chose avec le passage par référence!


---------------
!jb!
n°828365
jagstang
Pa Capona ಠ_ಠ
Posté le 21-08-2004 à 14:17:52  profilanswer
 

oui. mais un référence est "une sorte de" pointeur. donc on parle plus ou moins de la même chose.
 
merci de pas troller.

n°828367
lunarnet76
Posté le 21-08-2004 à 14:23:29  profilanswer
 

ah oui ok, mais donc sinon je reformule ma question : a quoi servent les pointeurs comme int* ???
en fait je vois a quoi sa sert avec les chaines de characteres car bcp de fonctions demande la taille donc ca peut servir mais sinon
ps: ca veut dire quoi troller?


Message édité par lunarnet76 le 21-08-2004 à 14:23:43

---------------
!jb!
n°828374
jagstang
Pa Capona ಠ_ಠ
Posté le 21-08-2004 à 14:42:39  profilanswer
 
n°828378
Ace17
Posté le 21-08-2004 à 15:03:14  profilanswer
 

Imagine que tu aies une liste d'objets du meme type, type comportant un attribut "taille" et un attribut "masse". Comment ferais-tu pour avoir deux classements de ces objets ( un selon chaque attribut ) sans pour autant dupliquer les objets?

n°828379
Ace17
Posté le 21-08-2004 à 15:06:04  profilanswer
 

Ca sert aussi a faire des listes chainées
Comment achever un débutant, tome 1, premier chapitre [:joce]  

n°828380
Ace17
Posté le 21-08-2004 à 15:06:41  profilanswer
 

Ca sert aussi a faire de l'allocation dynamique de mémoire

n°828383
lunarnet76
Posté le 21-08-2004 à 15:07:40  profilanswer
 

oh il est trop bien le lien, merci jagstang!!!


---------------
!jb!
n°828424
deltaden
Posté le 21-08-2004 à 16:16:32  profilanswer
 

antp a écrit :

y a le passage par référence pour éviter ça :o Cf mon post précédent


je sais :o
 
Mais les pointeurs, c'est plus fun :D

n°828472
raytaller
Posté le 21-08-2004 à 17:41:37  profilanswer
 

deltaden a écrit :

je sais :o
 
Mais les pointeurs, c'est plus fun :D


 
[:dawa]
bon, celle là je la quote, ça pourra servir de preuve plus tard, quand le C sera mort...
ils ne nous croiront jamais.

n°828473
Taz
bisounours-codeur
Posté le 21-08-2004 à 17:44:22  profilanswer
 

ahaha ... faut pas tout confondre. les pointeurs sont une notion fondamentale. avoir la possibilité de les faire pointer n'importe ou (ou plutot ne pas exercer de controle dessus our des raisons d'efficacité et d'implémentation) est une chose différente

n°828544
WhatDe
Posté le 21-08-2004 à 19:18:05  profilanswer
 

Taz notre maître tout puissant, guidez-nous vers la voie de la sagesse. Amen !

n°828606
printf
Baston !
Posté le 21-08-2004 à 22:48:48  profilanswer
 

raytaller a écrit :

[:dawa]
bon, celle là je la quote, ça pourra servir de preuve plus tard, quand le C sera mort...
ils ne nous croiront jamais.


 
On sera morts avant :D


---------------
Un matin je me lèverai et il fera beau.
n°828613
schnapsman​n
Zaford Beeblefect
Posté le 21-08-2004 à 23:26:57  profilanswer
 

JagStang a écrit :

oui. mais un référence est "une sorte de" pointeur. donc on parle plus ou moins de la même chose.
 
merci de pas troller.


 
parfois ce ne sont pas "des pointeurs" hein  [:boidleau]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°828704
p lejarre
Posté le 22-08-2004 à 02:11:15  profilanswer
 

lunarnet76 a écrit :

LUT!
J'ai actuellement un bon livre sur le C++, de la ressource internet etc... et j'ai beau lire tout ce qui concerne les pointeurs, ca me parait trés jolli mais... a quoi ca sert? Quand est-ce qu'on les utilises le + souvent? Parce que j'ai bien vu des endroits ou je pouvais m'en servir mais ou ca ne changer rien et ce n'était pas plus court alors....  
Ps: je rappel que je suis débutant!!!


 
ca se voit !  
 
et ca sert partout. je vais pas prendre un objet mais une structure. disons que tu as un fichier avec des enregistrements. donc la structure est de la forme  
 
 
typedef tadresse struct {
char nom[30]:
char prenom[30]:
char adresse[100]:
// et autres informations...
...
};
 
et par exemple on a un tableau d'adresse
 
tadresse clientsRam [1024];  
 
ensuite dans une fonction tu veux passer le tableau pour faire des traitements dessus donc logiquement tu ferais  
 
int proc_client (tadresse tab) {
// et pas mal de trucs....
 
}
 
ca dépends du compilo que tu as, mais il risque de te charger toutes les 1024 adresses dans la pile. autant dire que c'est un coup à tout planter.  
 
mais alors comment on fait pour traiter notre fichier d'adresse sans bleuir l'ecran de notre client. Et bien on va prendre un pointeur sur le tableau d'adresse.  
 
don notre fonction devient  
 
int proc_client_quivamieux (tadresse *pt) {
// des trucs qui ont des chances de s'executer.
}
 
 
ce qui va se passer c'est que l'on va pas mettre directement les données dans les parametres, mais on va indiquer l'emplacement de ces données en mémoire.  
 
alors pour avoir le 3eme enregistrement il te faut avoir quoi ?  
 
et bien *(pt+2) et alors pt += 2; fait que le contenu de pt dit *pt; pointe maintenant sur le 3eme élément.  
 
 
les pointeurs ca sert à faire des liaisons entre des elements. par exemple dans des listes chainées.  
 
tu as alors  
 
typedef tligne_commande struct {
int codeproduit;  
double prix;
int qte;
 
// chainage vers la suivante
tligne_commande *pt_suivant;  
// retour vers le précédent;
tligne_commande *pt_précédent;  
// le premier
tligne_commande *pt_debut;
 
// chainage sur l'entete de la commande
// nomclient, date, codecommande.  
tentete_commande *pt_entete;
}
 
ca permet de faire des tableau de dimensions infinies ou plutot de dimensions non connues.  
 

n°828730
Taz
bisounours-codeur
Posté le 22-08-2004 à 09:09:57  profilanswer
 

p lejarre a écrit :

ca se voit !  
 
et ca sert partout. je vais pas prendre un objet mais une structure. disons que tu as un fichier avec des enregistrements. donc la structure est de la forme  
 
 
typedef tadresse struct {
char nom[30]:
char prenom[30]:
char adresse[100]:
// et autres informations...
...
};

c'est du C. merci de sortir. c'est d'ailleurs du C qui ne compile pas.

p lejarre a écrit :


et par exemple on a un tableau d'adresse
 
tadresse clientsRam [1024];  
 
ensuite dans une fonction tu veux passer le tableau pour faire des traitements dessus donc logiquement tu ferais  
 
int proc_client (tadresse tab) {
// et pas mal de trucs....  
 
}
 
ca dépends du compilo que tu as, mais il risque de te charger toutes les 1024 adresses dans la pile. autant dire que c'est un coup à tout planter.

ton tableau clientsRam peut résider dans la pile ou dans le segment de données non-iniatilisé selon l'emplacement de sa déclaration. quand à ta fonction : elle passe __une__ structure par copie.

p lejarre a écrit :


mais alors comment on fait pour traiter notre fichier d'adresse sans bleuir l'ecran de notre client. Et bien on va prendre un pointeur sur le tableau d'adresse.  
 
don notre fonction devient  
 
int proc_client_quivamieux (tadresse *pt) {
// des trucs qui ont des chances de s'executer.
}

t'auras beau essayer tu n'arriveras jamais à passer un tableau par copie. cette version de ta fonction ne permet de passer en paramètre qu' __une__ structure. pour modification ou paramètre de sortie. pour passer un tableau, il faut un paramètre additionnel 'size_t n' qui est le nombre d'éléments du tableau.
 
ce qui va se passer c'est que l'on va pas mettre directement les données dans les parametres, mais on va indiquer l'emplacement de ces données en mémoire.  

p lejarre a écrit :


alors pour avoir le 3eme enregistrement il te faut avoir quoi ?  
 
et bien *(pt+2) et alors pt += 2; fait que le contenu de pt dit *pt; pointe maintenant sur le 3eme élément.

tu t'es déjà assez enfoncé comme ça, pas la peine de faire le warrior des pointeurs. pt[2] est très bien.
 

p lejarre a écrit :


les pointeurs ca sert à faire des liaisons entre des elements. par exemple dans des listes chainées.  

rien à voir. c'est à cause de la nature dynamique de la liste

p lejarre a écrit :


tu as alors  
 
typedef tligne_commande struct {
int codeproduit;  
double prix;
int qte;
 
// chainage vers la suivante
tligne_commande *pt_suivant;  
// retour vers le précédent;
tligne_commande *pt_précédent;  
// le premier
tligne_commande *pt_debut;
 
// chainage sur l'entete de la commande
// nomclient, date, codecommande.  
tentete_commande *pt_entete;
}

encore du mauvais C

p lejarre a écrit :


ca permet de faire des tableau de dimensions infinies ou plutot de dimensions non connues.

une lioste n'est pas un tableau.

n°828883
lunarnet76
Posté le 22-08-2004 à 13:50:14  profilanswer
 

Non mais lol!!!
bon donc apparement ca devient plutot obligatoire avec les listes chainés, donc quand j y serai je les utiliserais!!!cool!


---------------
!jb!
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Mais...a quoi servent les pointeurs???

 

Sujets relatifs
[PHP] Question POO / pointeurs [résolu- presque]type d'une difference de pointeurs
conversion adresse de tableau de pointeursPointeurs je comprends plus rien
Pointeurs ?????[C] tableau de pointeurs...
2 pointeurs a l'ecran pour 2 sourisProbleme bizard sur les pointeurs en C !
Tableau de pointeurs sur fonctons.Passage de pointeurs en paramètre erronés !
Plus de sujets relatifs à : Mais...a quoi servent les pointeurs???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR