IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

fonction sans argument ne renvoyant rien


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut fonction sans argument ne renvoyant rien
    Bonjour à tous,
    j'ai voulu faire un programme trés simple utilisant une fonction imbriquée dans le main():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # include <stdio.h>
    int main(void)
    {
     void f1(void);
     system("pause");
     return 0;
    }
     
    void f1(void)
    {
     printf("bonjour \n");
    }
    J'utilise DevCpp et lorsque je lance l'application "bonjour" n'est pas affiché et je ne comprend pas pourquoi. Je remercie par avance toute personne pouvant m'apporter une réponse car la je ne vois vraiment pas.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    bonjour,
    si tu n'appelles pas la fonction, elle risque pas de t'afficher quelque chose


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    # include <stdio.h>
    void f1(void);
     
    int main(void)
    {
    f1();
    system("pause");
    return 0;
    }
     
    void f1(void)
    {
    printf("bonjour \n");
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut Merci
    Merci beaucoup je ne comprenais pas pourquoi même en regardant des exemples!!Je ne savais pas qu'il fallait déclarer la fonction avant d'entamer le main!!

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    A vrai dire, un compilateur n'est surment pas plus intelligent que toi...

    Dis toi bien que, quand tu lis un livre, à moins que tu ne l'ai déjà lu avant, tu ne sais pas, en étant à la page 10 ce qui se passe à la page 11...

    Le compilateur, c'est exactement pareil...

    Il ne connait que ce qu'il a déjà rencontré...

    Pour qu'un compilateur "connaisse" une fonction, il suffit de lui donner le prototype de cette fonction avant de commencer à travailler...

    On prend donc l'habitude de mettre les prototypes de toutes les fonctions avant la fonction principales (int main()) ou, mieux encore (surtout quand le projet prend de l'ampleur), dans un fichier d'entete que l'on inclus dans le code avec la directive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include "nom_de_fichier.h"
    Par contre, une fois qu'il faut appeler la fonction, tout ce qu'il faut, c'est le nom de la fonction, et, si elle a besoin d'arguments, l'ensemble des arguments qui lui sont nécessaires...

    Ca donne quelque chose ressemblant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    /* une fonction qui  ne prend pas d'argument et qui ne renvoie rien */
    void Procedure1();
    /* une fonction qui prend deux arguments et qui ne renvoie rien */
    void Procedure2(int, char*);
    /*une fonction qui renvoie quelque chose mais qui ne prend pas d'argument*/
    int MaFonct1();
    /* une fonction qui renvoie quelque chose et qui prend 1 argument */
    int MaFonct2(int);
     
    /* la fonction principale (qui renvoie d'office un entier pour  signaler si
        l'application a pu etre exécutée jusqu'à son terme */
    int main()
    {
        /* appel de Procedure1 */
        Procedure1();
       /* appel de Procedure 2... il faut un entier et un pointeur de type caractere 
        */
        int monentier=14;
        char tab[15];
        Procedure2(monentier,tab);/* le nom des tableau sert aussi de pointeur sur
                           le premier élément du tableau */
        /* appel de Mafonct1() en récupérant la valeur dans un entier */
        monentier=MaFonct1();
        /* appel de MaFonct2() en passant un entier en parametre */
        monentier=Mafonct2(monentier);
    /* on quitte sans erreur */
        return 0;
    }
    /* il reste à dire à chaque  fonction ce qu'elle doit faire... */
    void Procedure1()
    {
        /* Ce qui doit etre fait */
    }
    /* il faut donner un nom aux arguments */
    void Procedure2(int ent, char* car)
    { 
        /* Ce qui doit etre fait */
    }
     
    int MaFonct1()
    {
        /* il faudra une valeur à renvoyer */
        int entier;
        /* ce qui doit etre fait */
        return entier;
    }
     
    int MaFonct2(int ent)
    {
        int entier;
        /* ce qui doit etre fait */
     
        return entier;
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction sans arguments par défaut
    Par Doksuri dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2010, 17h44
  2. fonction sans argument typé
    Par deubelte dans le forum C++
    Réponses: 4
    Dernier message: 27/07/2010, 15h00
  3. Déclarer fonction sans argument
    Par sp2308 dans le forum Débuter
    Réponses: 5
    Dernier message: 18/09/2008, 00h12
  4. fonction que ne renvoye rien
    Par clampin dans le forum C
    Réponses: 6
    Dernier message: 06/07/2006, 13h37
  5. Signature d'une fonction sans argument
    Par cj227854 dans le forum C++
    Réponses: 5
    Dernier message: 20/10/2005, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo