[C++] Probleme de pointeur ou reference!!
merci de bien vouloir m'aidez
j'ai un problème ke je narrive pa a comprendre en C++,puisque je suis un débutant.
explication :
j'ai une fonction de cette forme :
avec deux pointeurs sur tableau en argument.
le tableau tau2 est initialisé a 0 dans le main.
en fait les valeurs du tableau tau2 son modifiés dans cette fonction et j'aimerais les garder pour pas avoir a les refaire et donc de gagner du temps.
sauf que lorsque je sors de cette fonction la valeur de tau2 que j'ai stoké juste avan revien a 0!!!
et je n'arrive pas à comprendre, surtout que je comprend pas bien les truc de pointeurs réferences et touc ca!
merci de bien vouloir maider SVP
j'ai un problème ke je narrive pa a comprendre en C++,puisque je suis un débutant.
explication :
j'ai une fonction de cette forme :
int CoutFixe(indexed_sparse_matrix_t<int> & matrix,int prof,unsigned i,int f,int *tau,int * tau2)
avec deux pointeurs sur tableau en argument.
le tableau tau2 est initialisé a 0 dans le main.
en fait les valeurs du tableau tau2 son modifiés dans cette fonction et j'aimerais les garder pour pas avoir a les refaire et donc de gagner du temps.
int s; s=matrix.get(i,3*(prof-1)+tau[prof-1]%10)+tau2[prof-2]; tau2[prof-2]=s; return s;
sauf que lorsque je sors de cette fonction la valeur de tau2 que j'ai stoké juste avan revien a 0!!!
et je n'arrive pas à comprendre, surtout que je comprend pas bien les truc de pointeurs réferences et touc ca!
merci de bien vouloir maider SVP
Configuration: Windows XP Firefox 2.0.0.4
1 réponse
-
En C/C++ les valeurs passées en paramètres sont des recopies. Quand tu veux modifier un paramètre il faut
- soit utiliser une référénce (qui informatiquement parlant se comporte comme un pointeur initialisé)
- soit utiliser un pointeur : on recopie une adresse mais pas ce qui s'y trouve
Ainsivoid inc1(int i){++i;} // !ok (i n'est incrémenté que dans cette fonction) void inc2(int & i){++i;} //ok void inc3(int * i){++(*i);} //ok
Dans ton cas les valeurs pointées par tau2 donc normalement ça devrait être bon. Peux tu nous donner un extrait de code minimum (et compilable) mettant en évidence le problème ?
Bonne chance