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

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] probleme de pointeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] probleme de pointeur

n°194626
kick
Posté le 13-08-2002 à 14:26:00  profilanswer
 

bonjour  
j'ai un pointeur dans le main:
unsigned char * Dest;
je fait un printf("%d",&dest);
ca me donne 655060  
ensuite j'envoie ce pointeur a une fonction
LoadBMP(Dest,"test.bmp" );
et dans la fonction je fait
Dest = new unsigned char[(Width*Height*3)];
et un printf("%d",&Dest);
et la ca me donne 655072
et dans le main, je refait le printf et j'ai encore un valeur differente.
Est-ce normal?
 
ca fait un moment que j'ai pas programmer donc il est possible que j'ai fait de grosse gaffe mais bon!

mood
Publicité
Posté le 13-08-2002 à 14:26:00  profilanswer
 

n°194629
LetoII
Le dormeur doit se réveiller
Posté le 13-08-2002 à 14:30:38  profilanswer
 

kick a écrit a écrit :

bonjour  
j'ai un pointeur dans le main:
unsigned char * Dest;
je fait un printf("%d",&dest);
ca me donne 655060  
ensuite j'envoie ce pointeur a une fonction
LoadBMP(Dest,"test.bmp" );
et dans la fonction je fait
Dest = new unsigned char[(Width*Height*3)];
et un printf("%d",&Dest);
et la ca me donne 655072
et dans le main, je refait le printf et j'ai encore un valeur differente.
Est-ce normal?
 
ca fait un moment que j'ai pas programmer donc il est possible que j'ai fait de grosse gaffe mais bon!




 
si tu veux pouvoir modifier la varible pointée par Dest dans le main il faut que tu passe l'adresse de Dest à ta fonctino (&Dest) De plus si tu veux afficher l'adresse contenue dans Desct c :

Code :
  1. printf("%u",Dest);


---------------
Le Tyran
n°194632
kick
Posté le 13-08-2002 à 14:35:40  profilanswer
 

euh letoii
j'ai pas precisé que les parametre d'entrees de LoadBMP
 
int LoadBMP(unsigned char *, char *);
 
donc quand je passe Dest, ca passe l'adresse du pointeur non?
si je passe &Dest, ca me dit que je veux passer le pointeur du pointeur

n°194646
LetoII
Le dormeur doit se réveiller
Posté le 13-08-2002 à 15:00:38  profilanswer
 

Si j'ai bien compris, dans ta fonction tu veux faire pointer Dest sur un nouvel espace mémoir. Et tu te demande pkoi ça ne pointe pas dessus quand tu resort de ta fonction, non?


Message édité par LetoII le 13-08-2002 à 15:00:50

---------------
Le Tyran
n°194653
kick
Posté le 13-08-2002 à 15:04:37  profilanswer
 

ouais c ca, en fait dans loadbmp je charge l contenu d'une image dans une surface unsigned char.
Ensuite je la reecrit dans un writebmp mais la pouf pouf la surface n'est plus la meme

n°194661
LetoII
Le dormeur doit se réveiller
Posté le 13-08-2002 à 15:13:19  profilanswer
 

kick a écrit a écrit :

ouais c ca, en fait dans loadbmp je charge l contenu d'une image dans une surface unsigned char.
Ensuite je la reecrit dans un writebmp mais la pouf pouf la surface n'est plus la meme




 
D'ou la subtile différence entre:
 

Code :
  1. void maFonction1(unsigned char *a);
  2. void maFonction2(unsigned char **a);
  3. unsigned char *dest;
  4. void maFonction1(dest);
  5. void maFonction2(&dest);


 
 
 
Dans le premier cas on passe l'adresse contenue dans dest à la fonction (donc la modification de a ne se répercute pas dans le contexte appelant).
Dans le 2eme cas a contien l'adresse de la variable dest, donc quand *a est modifié la valeur dans dest est modifiée.


---------------
Le Tyran
n°195279
Fouge
Posté le 14-08-2002 à 15:59:20  profilanswer
 

unsigned char * Dest;  
 
Dest est donc le pointeur.
C'est une erreur d'utiliser &Dest !
Il faut écrire : printf("%d",Dest);  
 
Voila...

n°195290
LetoII
Le dormeur doit se réveiller
Posté le 14-08-2002 à 16:12:18  profilanswer
 

fouge a écrit a écrit :

unsigned char * Dest;  
 
Dest est donc le pointeur.
C'est une erreur d'utiliser &Dest !
Il faut écrire : printf("%d",Dest);  
 
Voila...




 
T'arrive après la bataille toi, je l'ai déjà signalé ;)


---------------
Le Tyran
n°195572
Musaran
Cerveaulté
Posté le 15-08-2002 à 04:16:42  profilanswer
 

pour afficher un pointeur:

Code :
  1. printf("%p",ptr) ;


 
Si tu es en C++:

Code :
  1. unsigned char uc= 'A';
  2. unsigned char *dest= 0;
  3. void maFonction3(unsigned char*& puc){
  4. puc= &uc ;
  5. }
  6. void f(){
  7. maFonction3(dest) ;//modifies dest global
  8. }


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

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

  [C/C++] probleme de pointeur

 

Sujets relatifs
Probleme sous ACCESS[vb] problème avec ma roulette de souris
Problème de formulaire avec history.back();[php] Problème dans formulaire
[VB] empaquetage et installation, petit problème... HELP![Résolu]Problème de code IF et report ?
[VBScript] Gros probleme avec XMLhttpproblème de comptage avec mysql... (résolu)
Problème de construction de projet sous Delphi 6 Entproblème de boucle avec update.........(résolu)
Plus de sujets relatifs à : [C/C++] probleme de pointeur


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