Passage de paramètres par pointeur, en cascade
Salut,
comme le titre l'indique, j'ai un petit soucis de passage de paramètres par pointeur ... Il y a surement un truc que je n'ai pas bien assimilé ...
Voici ma facon de proceder :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| main ()
{
double *ptr;
ptr = malloc ( taille* sizeof(double));
.
.
function1(ptr, .....);
.
}
function1(double *ptr, .....)
{
ptr = var_constante//provenant d'une var globale
.
.
for (i=(taille-1);i>= 0;i--)
function2(ptr,....);
.
.
}
function2(double *ptr, .....)
{
resultat = resultat + (*ptr * local_x); //resultat et local_x sont déclares
//localement et pointe sur des tableaux
ptr--;
.
if (ptr_Hn == adr_start_Hn) //adr_start_Hn
ptr_Hn = adr_end_Hn; //adr_end_Hn -> 2 variables globales
.
} |
Donc voici mon probleme :
dans la function2 :
ptr correspond bien a l'adresse et *ptr a la valeur pointee par celle-ci
Cependant la nouvelle valeur de l'adresse de ptr apres la decrementation n'est pas retenue par la function1 et elle renvoie toujours la meme, voici l'affichage d'un petit debug histoire de vous eclairer :
function1 :
adresse de ptr = 100
function2 :
adresse de ptr = 100 avant le "ptr--"
adresse de ptr = 92 apres le "ptr--"
retour function1 (dans la boucle for)
adresse de ptr = 100 ..... :cry:
Alors bon je peux mettre le "ptr--" dans la function1 juste apres l'appel de la function2 et tout marche tres bien comme ca ...
Mais j'ai vraiment besoin de mettre ce process dans la function2.
J'ai du me perdre quelquepart, et j'espere ne pas vous avoir perdu lors de l'explication du probleme.
Si quelqu'un a une idee, merci beaucoup :D