probleme de pointeur [C/C++] - C++ - Programmation
Marsh Posté le 13-08-2002 à 14:30:38
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 :
|
Marsh Posté le 13-08-2002 à 14:35:40
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
Marsh Posté le 13-08-2002 à 15:00:38
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?
Marsh Posté le 13-08-2002 à 15:04:37
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
Marsh Posté le 13-08-2002 à 15:13:19
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 :
|
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.
Marsh Posté le 14-08-2002 à 15:59:20
unsigned char * Dest;
Dest est donc le pointeur.
C'est une erreur d'utiliser &Dest !
Il faut écrire : printf("%d",Dest);
Voila...
Marsh Posté le 14-08-2002 à 16:12:18
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é
Marsh Posté le 15-08-2002 à 04:16:42
pour afficher un pointeur:
Code :
|
Si tu es en C++:
Code :
|
Marsh Posté le 13-08-2002 à 14:26:00
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!