[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
A voir également:
- [C++] Probleme de pointeur ou reference!!
- Reference pto - Accueil - Box & Connexion Internet
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Indice de référence des loyers - Guide
- Excel a rencontré un problème au niveau d'une ou de plusieurs références de formules ✓ - Forum Excel
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
Ainsi
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
- 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