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

2 réponses

  1. 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
  2. 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
    1. 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