[C++] Probleme de pointeur ou reference!!

Fermé
chreks - 5 juin 2007 à 20:58
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 - 6 juin 2007 à 09:38
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 :
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

1 réponse

mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
6 juin 2007 à 09:38
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

Ainsi
void 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
0