Erreur de segmentation [Résolu]

Signaler
Messages postés
15
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
24 novembre 2010
-
Messages postés
15
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
24 novembre 2010
-
Bon je dois encore avoir du mal avec les pointeurs ( visiblement)...
Je compile le code ci-dessous avec gcc et le seul résultat que j'obtiens est : "Erreur de segmentation" .

Code :
int main(int nb_arg, char **arg)
{
long *ptr;
fonction(ptr);
printf("%ld",*ptr);
return 0;
}

void fonction(long *ptr)
{
*ptr=1;
}

merci

4 réponses

Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015

Si ton fonction ne fait que ce genre de travail, il est inutile d'utiliser les pointeurs.
Utilise plutôt une référence :
void fonction(long & val) 
{ 
val = 1; 
}

int main(int nb_arg, char **arg) 
{ 
long val; 
fonction( val); 
printf( "%ld", val); 
return 0; 
} 

Ca t'évitera de t'encombrer avec des pointeurs, mais sache que pour utiliser la fonction que tu as actuellement, tu peux faire ceci :
long val; 
fonction( & val); 


Coin coin !
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut

Juste une question : ton pointeur, il pointe vers quelle variable?
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
14780
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
4 août 2020
92
Yo!
Comme le dit Pistol_Pete, il manque la variable pointée par ton pointeur.
Un truc du style:
long lvar;
long *ptr = &lvar;
...


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
15
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
24 novembre 2010

merci pour vos réponses ! :)