Pointeur,adresse ...

Résolu
alamimoutaouakil Messages postés 7 Statut Membre -  
alamimoutaouakil Messages postés 7 Statut Membre -
Bonjour, j'essai d'écrire un programme qui me trie un tableau puis je l'essai en entrant des valeurs, j'ai donc écrit deux versions pour essayer ma fonction qui sont pour moi equivalentes et pourtant l'une marche tres bien et l'autre me dit "segmentation fault (core dumped)"
voici les deux version :
La premiére :
#include <stdio.h>
#include <stdlib.h>
#define N 6
void trie3(float*,float*,int,int);
int main()
{ int i, g=0,d=N-1 ;
float T[N],maxi;
printf("Entrez les valeurs du tableau !");
for(i=0;i<N;i++)
scanf("%f",&T[i]);
trie3(T,&maxi,g,d);
printf("\nLe max est : %f",maxi);
for(i=0;i<N;i++)
printf("\n%f",T[i]);
return 0;
}
La deuxième :
#include <stdio.h>
#include <stdlib.h>
#define N 6
void trie3(float*,float*,int,int);
int main()
{ int i, g=0,d=N-1 ;
float T[N],*maxi;
printf("Entrez les valeurs du tableau !");
for(i=0;i<N;i++)
scanf("%f",&T[i]);
trie3(T,maxi,g,d);
printf("\nLe max est : %f",*maxi);
for(i=0;i<N;i++)
printf("\n%f",T[i]);
return 0;
}
La difference est liée à maxi!!

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Tu n'as pas fait d'allocation.
    Utilise un malloc() et ça ira mieux.
    int *maxi=malloc(sizeof(int));
    Et un free(maxi); juste avant le return 0; final.
    Cdlt,
    0
    1. Utilisateur anonyme
       
      Bonjour

      Plutôt sizeof(float), je pense.
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Très juste :-).
      0
  2. alamimoutaouakil Messages postés 7 Statut Membre
     
    salut,
    Je vous remercie pour votre réponse en effet c'était seulement l'allocation qui manquer !!
    0