Malloc en C
Fermé
asma
-
12 mai 2014 à 19:24
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 mai 2014 à 22:23
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 mai 2014 à 22:23
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
12 mai 2014 à 19:28
12 mai 2014 à 19:28
'lut. Pardon, je pige pas... On initialise pas
Si tu cherches à initialiser
malloc, on l'appelle, c'est tout!
Si tu cherches à initialiser
*pavant d'affecter sa valeur, tu fais juste
float *p = NULL;
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
12 mai 2014 à 22:23
12 mai 2014 à 22:23
void main()
Le bon prototype est : int main(void)
Et il ne faut pas oublier : return 0; en fin de main().
p=(float*)malloc(n*sizeof(float));
Pour info, le (float *) devant est complètement inutile. Et même déconseillé.
if(*p==null)
C'est l'adresse et non la valeur pointée qu'il faut vérifier. Et c'est NULL (pas null).
Ce qui donne : if(p==NULL)
for(i=0;i<n;i++,p++)
p[i]=0;
p++ ?? Que souhaites-tu faire ? Il faut faire attention car p++ et i++ donne : p[i+2];
Soit tu fais p++, soit i++. Je te conseille ici de faire uniquement i++ sinon tu perds l'adresse du premier élément.
De plus, tu peux utiliser la fonction memset() pour initialiser le tableau à 0. Ou encore plus simplement, tu peux utiliser calloc() à la place de malloc().
Le bon prototype est : int main(void)
Et il ne faut pas oublier : return 0; en fin de main().
p=(float*)malloc(n*sizeof(float));
Pour info, le (float *) devant est complètement inutile. Et même déconseillé.
if(*p==null)
C'est l'adresse et non la valeur pointée qu'il faut vérifier. Et c'est NULL (pas null).
Ce qui donne : if(p==NULL)
for(i=0;i<n;i++,p++)
p[i]=0;
p++ ?? Que souhaites-tu faire ? Il faut faire attention car p++ et i++ donne : p[i+2];
Soit tu fais p++, soit i++. Je te conseille ici de faire uniquement i++ sinon tu perds l'adresse du premier élément.
De plus, tu peux utiliser la fonction memset() pour initialiser le tableau à 0. Ou encore plus simplement, tu peux utiliser calloc() à la place de malloc().
12 mai 2014 à 19:46
if(p==null)? mais il ya eu eu erreur dans le code suivant pouquoi ?
#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,i;
float *p;
printf(" donner le nb de valeurs \n ");
scanf("%d",&n );
p=(float*)malloc(n*sizeof(float));
if(*p==null)
printf( " pas de place pour toutes ces valeurs \n");
else for(i=0;i<n;i++,p++)
p[i]=0;
for(i=0;i<n;i++,p++)
printf("%f \n ", p[i]);
}
12 mai 2014 à 19:49
Mets à la place.