Passage par reference C++
Manana Nina
Messages postés
37
Statut
Membre
-
Manana Nina Messages postés 37 Statut Membre -
Manana Nina Messages postés 37 Statut Membre -
Bonjour,
je veux retourner la valeur minimal d'un tableau et son indice en passant le tableaux comme paramètre, (passage par adresse puis par référence) par adresse ça marche voilà la solution :
void fonction(int T[]){
int i, min,indice ;
//int NVAL ;
//cout << "donnez " << NVAL << " valeurs\n" ;
min = *T ;
for (i=0 ; i<10 ; i++)
{if (*(T+i) < min){
min = *(T+i);
indice=i;}}
cout << "valeur min : " << min << "indice : "<<indice <<"\n" ;
}
pour l'appel de la fonction dans main :
int T[10]={2,3,34,87,6,6,1,3,5,2};
int *P= &T[0];
fonction(P);
je veux faire la même chose en passant une référence mais j'arrive pas , veuillez m'aider svp !! merci
je veux retourner la valeur minimal d'un tableau et son indice en passant le tableaux comme paramètre, (passage par adresse puis par référence) par adresse ça marche voilà la solution :
void fonction(int T[]){
int i, min,indice ;
//int NVAL ;
//cout << "donnez " << NVAL << " valeurs\n" ;
min = *T ;
for (i=0 ; i<10 ; i++)
{if (*(T+i) < min){
min = *(T+i);
indice=i;}}
cout << "valeur min : " << min << "indice : "<<indice <<"\n" ;
}
pour l'appel de la fonction dans main :
int T[10]={2,3,34,87,6,6,1,3,5,2};
int *P= &T[0];
fonction(P);
je veux faire la même chose en passant une référence mais j'arrive pas , veuillez m'aider svp !! merci
A voir également:
- Passage par reference C++
- Passage qwerty azerty - Guide
- Test passage windows 11 - Guide
- Passage windows 10 à 11 gratuit - Guide
- Reference pto - Accueil - Box & Connexion Internet
- Passage windows 7 à 10 - Accueil - Mise à jour
2 réponses
passage par adresse void fonction(int *T ) ou aussi comme ci dessus
void fonction(int T[])
je cherche à faire la même chose en passage par référence
void fonction(int &T)
void fonction(int T[])
je cherche à faire la même chose en passage par référence
void fonction(int &T)
salut
D'abord, j'aimerais faire quelques remarques sur ton programme:
void fonction(int T[]) est strictement equivalent a void fonction(int* T)
et puis dans ton main, ca se sert a rien de declarer un pointeur pour recuperer l'adresse de debut de ton tableau T, car il suffit d'ecrire: fonction(T)
en effet, T represente exactement l'adresse du premier élement de ton tableau T, c'est a dire l'adresse de T[0].
Pour ce qu'il s'agit du passage de valeurs par reference, si ma mémoire est freche, ca ne s'utilise qu'en C++ (pas en c), le principe est simple, on ne veut pas manipuler des pointeurs, donc on utilise les réferences. exemple:
void fonction(int &a, int &b)
{.....
int c = a;
a = b; b = c; //commutation de valeurs...
}
dans le main:
void main(void){
int i = 4, j = 6;
echange (i, j); // à présent i == 6, j == 4
}
pour ton cas, voici la solution
void fonction(int &T){
int i, min,indice ;
int* pt=&T;
min = T ;
for (i=0 ; i<10 ; i++)
{
if (*(pt+i)< min){
min = *(pt+i);
indice=i;}
}
cout<<"le min est "<<min<< "et il se trouve a la position "<<indice+1<<endl;
}
int main(void){
int T[10]={2,3,34,87,6,6,1,3,5,2};
fonction(T[0]);
return(0);
}
je te fais remarquer que j'ai utilisé quand meme un pointeur sur l'adresse de T pour pouvoir acceder aux element du tableau T
bon courage pour la suite...........
D'abord, j'aimerais faire quelques remarques sur ton programme:
void fonction(int T[]) est strictement equivalent a void fonction(int* T)
et puis dans ton main, ca se sert a rien de declarer un pointeur pour recuperer l'adresse de debut de ton tableau T, car il suffit d'ecrire: fonction(T)
en effet, T represente exactement l'adresse du premier élement de ton tableau T, c'est a dire l'adresse de T[0].
Pour ce qu'il s'agit du passage de valeurs par reference, si ma mémoire est freche, ca ne s'utilise qu'en C++ (pas en c), le principe est simple, on ne veut pas manipuler des pointeurs, donc on utilise les réferences. exemple:
void fonction(int &a, int &b)
{.....
int c = a;
a = b; b = c; //commutation de valeurs...
}
dans le main:
void main(void){
int i = 4, j = 6;
echange (i, j); // à présent i == 6, j == 4
}
pour ton cas, voici la solution
void fonction(int &T){
int i, min,indice ;
int* pt=&T;
min = T ;
for (i=0 ; i<10 ; i++)
{
if (*(pt+i)< min){
min = *(pt+i);
indice=i;}
}
cout<<"le min est "<<min<< "et il se trouve a la position "<<indice+1<<endl;
}
int main(void){
int T[10]={2,3,34,87,6,6,1,3,5,2};
fonction(T[0]);
return(0);
}
je te fais remarquer que j'ai utilisé quand meme un pointeur sur l'adresse de T pour pouvoir acceder aux element du tableau T
bon courage pour la suite...........
merci bien pour les remarques , au-fait mon programme est en C++ c'est pour cela que j'ai demandé le passage par référence, je l'ai trouver dans un examen , le prof à demandé au lieu d'un passage par adresse de faire un passage par référence alors que le fait de faire une référence d'un tableau me semblais bizarre , merciii