Pointeur,adresse ...

Résolu
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. Contributeur
    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,
    1. Bonjour

      Plutôt sizeof(float), je pense.
    2. Contributeur
      Très juste :-).
  2. salut,
    Je vous remercie pour votre réponse en effet c'était seulement l'allocation qui manquer !!