Passage par reference C++

Manana Nina Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
Manana Nina Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

2 réponses

Manana Nina Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
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)
0
tivoche
 
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...........
0
Manana Nina Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
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
0