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

  FORUM HardWare.fr
  Programmation
  C++

  question sur le passage d'un pointeur en paramètre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

question sur le passage d'un pointeur en paramètre

n°350500
airseb
Posté le 02-04-2003 à 19:49:30  profilanswer
 

Soit la fonction suivante :
 
void coincide (vecteur3d *p11, vecteur3d *p22)
{
...
}
et son appel :
 
p2->coincide (p1, p2) ;
 
p1 et p2 sont des pointeurs de type verteur3d (une classe)
Pourquoi ça ne marche pas quand je met des & devant p1 et p2 ?

mood
Publicité
Posté le 02-04-2003 à 19:49:30  profilanswer
 

n°350535
theshockwa​ve
I work at a firm named Koslow
Posté le 02-04-2003 à 20:27:56  profilanswer
 

static void vecteur3d::coincide(vecteur3d *p1, vecteur3d *p2) {
...
}
 
vecteur3d *p1, *p2;
 
vecteur3d::coincide(p1, p2);
 
devrait marcher ...
sinon, si tu as
 
vecteur3d p1, p2;
 
tu dois faire :
vecteur3d::coincide(&p1, &p2);
 
 
et dernière solution : si les & sont dans la déclaration de ta fonction (à la place des étoiles) alors la solution est :
 
vecteur3d p1, p2;
 
vecteur3d::coincide(p1, p2);
 
 
les miracles du passage par référence ou par valeur ... :D


---------------
last.fm
n°350557
Konar
Posté le 02-04-2003 à 21:07:53  profilanswer
 

theShOcKwAvE a écrit :


les miracles du passage par référence ou par valeur ... :D


 
et en mettant des const (référence ou valeur) c'est le bonheur.

n°350653
theshockwa​ve
I work at a firm named Koslow
Posté le 02-04-2003 à 23:11:26  profilanswer
 

Konar a écrit :


 
et en mettant des const (référence ou valeur) c'est le bonheur.


 
c'est vrai qu'on peut mettre des const ....
 
donc nouveau proto de fonction :
 
static void vecteur3d::coincide(const vecteur3d *p1, const vecteur3d *p2);


---------------
last.fm
n°352071
airseb
Posté le 03-04-2003 à 21:31:28  profilanswer
 

theShOcKwAvE a écrit :


 
c'est vrai qu'on peut mettre des const ....
 
donc nouveau proto de fonction :
 
static void vecteur3d::coincide(const vecteur3d *p1, const vecteur3d *p2);


 
les const c pas juste pour les constantes  :??:  
ça fait quoi d'autre sinon ?

n°352074
airseb
Posté le 03-04-2003 à 21:35:22  profilanswer
 

airseb a écrit :

Soit la fonction suivante :
 
void coincide (vecteur3d *p11, vecteur3d *p22)
{
...
}
et son appel :
 
p2->coincide (p1, p2) ;
 
p1 et p2 sont des pointeurs de type verteur3d (une classe)
Pourquoi ça ne marche pas quand je met des & devant p1 et p2 ?
 


 
(voir la question en gras)
sachant que p1 et p2 ont été déclarés comme pointeurs de type vecteur3d

n°352200
theshockwa​ve
I work at a firm named Koslow
Posté le 04-04-2003 à 00:21:20  profilanswer
 

airseb a écrit :


 
(voir la question en gras)
sachant que p1 et p2 ont été déclarés comme pointeurs de type vecteur3d
 


 
ca ne marche pas quand tu mets des & devant p1 et p2 car tu demandes l'adresse de ces variables => tu obtiens un pointeur sur un pointeur de vecteur ... Un niveau d'indirection en trop ...
 
Les const sont effectivement pour préciser les constantes ... Et par conséquent, quand, dans une fonction, tu ne modifies pas les paramètres, tu peux les déclarer en const ... C'est plus explicite pour l'utilisateur qui reprendra tes classes ...


---------------
last.fm
n°352207
Konar
Posté le 04-04-2003 à 01:25:08  profilanswer
 

theShOcKwAvE a écrit :


Les const sont effectivement pour préciser les constantes ... Et par conséquent, quand, dans une fonction, tu ne modifies pas les paramètres, tu peux les déclarer en const ... C'est plus explicite pour l'utilisateur qui reprendra tes classes ...


 
et ca permet (dans certains cas) au compilateur d'optimiser plus ou moins le code.

n°352211
LeGreg
Posté le 04-04-2003 à 04:40:18  profilanswer
 

Konar a écrit :


et ca permet (dans certains cas) au compilateur d'optimiser plus ou moins le code.


 
Hmm ce n'est jamais le cas meme si c'est un mythe assez répandu.
 
En aucun cas un const n'est une indication au compilateur
d'optimisation. Et s'il fait l'analyse pour voir les variables qui ne sont accédés qu'en lecture alors il n'a pas besoin de const pour le voir (et s'il tenait compte du const il y aurait de forte chances pour qu'il ait tout faux).
 
Afin que ce soit clair: const n'est qu'un outil qui améliore la type safety des programmes, par l'ajout de warnings et d'erreurs à la compilation lorsqu'elle n'est pas respectée mais jamais utilisée par le compilateur pour optimisation.
 
Seule optimisation "algorithmique" permise par const: la surcharge de fonction,
 
j'ai une string de char appelee machaine
- en version non const, machaine[1] renverra une reference non const sur un char.
- en version const, machaine[1] renverra un simple char en copie.
 
mais dans ce cas c'est une optimisation faite par l'utilisateur et non par le compilateur.
 
LeGreg


---------------
voxel terrain render engine | animation mentor

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

  question sur le passage d'un pointeur en paramètre

 

Sujets relatifs
Question mysql pour un débutant... RESOLU grace a Mr yvele Merci[PHP] Petite question sur 'include'
Question sur la fonction php : odbc_result[Session] Passage de l'id de session de pages en pages
[C] Question sur les fichiersQuestion pour les ultra baleze de la prog XFree
Question con sur smarty (templates)PHP : question de base
[Access] Une grosse question car je suis perdu...un ptit truc tout con mais qui plante, pourquoi ?(pointeur)
Plus de sujets relatifs à : question sur le passage d'un pointeur en paramètre


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