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

 


Dernière réponse
Sujet : [C++] Problème de pointeurs, d'allocation ?
antp robripper: je me demande pq tu postes ça dans le forum, alors que 2 minutes plus tôt je t'envoyais la réponse par mail :D
pour ceux que ça intéresse, voici ma réponse (qui concorde avec la réponse de pymousses) :
 

Citation :


pcq tu passes la valeur et pas l'adresse:

Code :
  1. char *val=NULL;
  2. fonction (&var);
  3. et plus bas:
  4. fonction (char **fvar) {
  5. *fvar = new char[10];
  6. }


 

[edtdd]--Message édité par antp--[/edtdd]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
antp robripper: je me demande pq tu postes ça dans le forum, alors que 2 minutes plus tôt je t'envoyais la réponse par mail :D
pour ceux que ça intéresse, voici ma réponse (qui concorde avec la réponse de pymousses) :
 

Citation :


pcq tu passes la valeur et pas l'adresse:

Code :
  1. char *val=NULL;
  2. fonction (&var);
  3. et plus bas:
  4. fonction (char **fvar) {
  5. *fvar = new char[10];
  6. }


 

[edtdd]--Message édité par antp--[/edtdd]

koulip31 fonction(&var); doit marcher
 
pourkoi?
car fonction nutilise pas ce q'uon lui a donne en parametre mais une copie de celui ci donc normal que ca marche po :)
donc en fillant son adresse il vas utiliser la copie de son adresse donc nikel il manupuleras ton pointeur :)
 
 
 
void fonction(int a)
{a = 5;}
 
int main(int argc, char *argv[])
{int a;
 a = 10;
 fonction(a);
 printf("%d\n",a);}
 
taffiche 10 et non 5 pourtant le a envoille 'a' la fonction est le meme que celui recus donc il devrais changer en 5 ...  
mais comm il lui fournit une copie de 'a' et non 'a' .. 'a' est tjour = a 10 ... c'est la meme chose pour les pointeurs.
 
voila pour l'explication tj mieux savoir le pourquoi :)
pymousses

robripper a écrit a écrit :

Pourquoi var vaut toujours NULL après la fonction ???
 
Void main()
{

char *var=NULL;
fonction(var);
// ici var = NULL !!!

}
 
 
fonction (char *fvar)
{
fvar = new char[10];

// ici fvar = qqch
}  




 
fonction(&var);
avec ca ca devrait marcher.

la viper en fait, ce qui doit se passer .. c'est que quand tu sors de ta fonction 'fonction', le pointeur var pointe tjrs sur son ancienne adresse.
 
donc il faut que tu l'obliges à pointer vers la nouvelle.
maintenant je suis pas sur .. il est tot la  :pt1cable: e
 
essaye:
 
void main(void)
{
char *var=NULL;
var = fonction();
...
}
 
char* fonction()
{
   char *ptr = new char[10];
   //blabla
   return ptr;
}
 
ou sinon il faut peut etre faire un pointeur de pointeur et tu n'auras plus le probleme.
 
void main(void)
{
char **var=NULL;
fonction(var);
....
 
fonction(char **var)
{
    *var = new char[10];
   // blabla
}
là l'adresse de base du double pointeur ne changera pas et donc sera connue n'importe où que ce soit dans le main ou dans fonction.. ce qui n'est pas le cas quand tu utilises juste un pointeur
 
 
maintenant je peux me tromper j'ai rien testé là .. et il est tot ;-)
robripper Pourquoi var vaut toujours NULL après la fonction ???
 
Void main()
{

char *var=NULL;
fonction(var);
// ici var = NULL !!!

}
 
 
fonction (char *fvar)
{
fvar = new char[10];

// ici fvar = qqch
}

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)