Problème de pointeurs

Problème de pointeurs - C - Programmation

Marsh Posté le 15-10-2012 à 22:05:23    

Bonjour à tous !
Cela fait 2 semaines que je me suis lancé dans la programmation et dans l'apprentissage du langage C. Mes questions sont donc relativement basiques :)
 
Voici mon problème : j'essaie de créer un pointeur effectif dans une autre fonction que int main. Voici donc mon code (qui ne fonctionne pas, évidemment) :
 
int main ()
{
int int1 ();
return 0;
}
int int1 ()
{
long nombre = 0;
long *pointeur1;
pointeur1 = &nombre;
printf("Nombre : %ld", *pointeur1);
}

Est-ce que quelqu'un pourrait-il m'expliquer pourquoi, lorsque j'exécute, l'écran n'affiche pas mon printf ?
 
Autre petite question : comment faire pour déclarer une variable et sa valeur dans int main, déclarer le pointeur dans int int1 et afficher la valeur de la variable dans int int1 ?
 
Merci d'avance pour vos réponses !

Reply

Marsh Posté le 15-10-2012 à 22:05:23   

Reply

Marsh Posté le 15-10-2012 à 23:02:37    

Bonjour !
 
Pour l'affichage, il manque le "\n" dans le printf (cf. un post récent : http://forum.hardware.fr/hfr/Progr [...] 7960_1.htm).
 
De plus, dans le "main", vous ne faites que déclarer une fonction "int1", mais vous ne l'appelez pas ... Une syntaxe correcte serait (je mets de côté argc et argv) :  
 

Code :
  1. int int1();
  2. int main()
  3. {
  4.      int1();
  5.      return 0;
  6. }
  7. int int1()
  8. {
  9. ....
  10. }


 
Pour la deuxième question, pouvez-vous préciser ?  Je n'ai pas sûr d'avoir bien compris ce que vous voulez faire.

Reply

Marsh Posté le 16-10-2012 à 11:46:51    

Pour le deuxième question ça doit être ça je suppose:

Code :
  1. void int1 (long *p) // on déclare une fonction prenant un pointeur sur un long en paramètre.
  2. {
  3.      printf("Nombre : %ld", *p);
  4. }
  5. int main ()
  6. {
  7.      long nombre = 100; // on déclare et initialise un nombre
  8.      int1 ( &nombre); // on passe son adresse a la fonction
  9.      return 0;
  10. }


---------------
Seul Google le sait...
Reply

Marsh Posté le 16-10-2012 à 18:40:27    

Je comprends très bien ce que tu as fait, mais je ne vois vraiment pas comment déclarer la variable dans [I]int2[/I] et l'afficher dans [I]int1[/I]. Lorsque je compile, il ne se passe à nouveau rien... :(
 
void int1 (long *p) // on déclare une fonction prenant un pointeur sur un long en paramètre.
{
     printf("Nombre : %ld", *p);
}
int int2 ()
{
    long nombre = 100; // on déclare et initialise un nombre
     int1 (&nombre); // on passe son adresse a la fonction
}
int main ()
{
     return 0;
}

Reply

Marsh Posté le 16-10-2012 à 19:35:00    

Peut être que si tu faisais
int main ()  
{  
     int2();
     return 0;  
}  
Il se passerait quelque chose, parce que la, avec un main qui ressort tout de suite, pas étonnant qu'il ne se passe rien.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed