Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

int main ? void main ? ou int main(void) ??!!



  1. #1
    jasmine.27

    int main ? void main ? ou int main(void) ??!!


    ------

    Bonjour à tous ,

    Je suis vraiment toute nouvelle dans l'univers de l'algorithmique et du langage C !

    Ce que j'ai réussi à connaître c'est tout le nécessaire pour débuter , sauf que la résolution d'un exercice s'est faite avec void main! Alors que je ne connais que int main !

    En cherchant la différence sur le net , j'ai trouvé un tout autre truc ( enfin syntaxe ) : int main (void)

    Alors je me demandais si quelqu'un pouvait m'expliquer un peu ce qu'est la différence entre les trois syntaxes

    Merci d'avance

    -----

  2. Publicité
  3. #2
    skydancer

    Re : int main ? void main ? ou int main(void) ??!!

    Bonjour,
    int main : signifie que la fonction main renvoir un entier de type int. A la fin du main tu as quelque chose du genre return a;

    void main : la fonction main ne renvoie rien

    int main(void) : main ne prend pas de paramètres, mais renvoie un entier.

  4. #3
    bzh_nicolas

    Re : int main ? void main ? ou int main(void) ??!!

    int main()
    veux dire que ta fonction main va retourner un entier. C'est, en général, utilisé pour retourner une valeur indiquant si ton programme c'est bien exécuté ou pas : 0 si pas de problème ; une autre valeur si plantage, interruption par l'utilisateur, ...
    L'entier est retourné vers le système d'exploitation ou vers un autre programme qui aurait appelé le premier programme.
    void main()
    veux dire que ta fonction ne retourne rien.
    int main (void)
    est la définition de main sous sa forme prototypé.

    Si tu respectes exactement les normes de C ta fonction main doit prendre la forme
    Code:
    int main(void)
    {
      /*code*/
      return;
    }
    ou (si tu lis les paramètres de lignes de commande)
    Code:
    int main(int argc, char *argv[])
    {
      /*code*/
      return;
    }
    Sachant que la norme impose que main retourne un entier et que le retour soit explicite.
    Elle recommande également que la définition de la fonction soit faite sous sa forme prototypée.
    Les compilateurs respectent plus ou moins la norme.
    Donc pour résumer
    void main()
    -->Ne respecte pas la norme : pas de retour d'entier, pas déclaré sous la forme prototypée
    int main()
    -->Ne respecte pas la norme : retour d'entier OK, mais pas déclaré sous forme prototypée.
    int main(void)
    -->Respecte la norme.

  5. #4
    jasmine.27

    Re : int main ? void main ? ou int main(void) ??!!

    Je vous remercie de m'avoir expliqué !

    J'"ai compris le principe mais sans le prendre mal : forme prototypée veut dire ?

  6. #5
    bzh_nicolas

    Re : int main ? void main ? ou int main(void) ??!!

    Citation Envoyé par jasmine.27 Voir le message
    Je vous remercie de m'avoir expliqué !

    J'"ai compris le principe mais sans le prendre mal : forme prototypée veut dire ?
    La forme prototypée est la manière de déclarer une fonction dans les fichiers d'entête (.h).
    Quand tu écris un programme en C si tu appelles une fonction (ou une méthode), il faut qu'elle soit définit avant son appel sinon le compilateur te retourne une erreur. Dans le cas de programmes complexes utilisant beaucoup de fonctions, ou de projets sur lesquels plusieurs personnes travaillent en même temps, il peut parfois être difficile de définir les fonctions dans le "bon ordre" (voire impossible).
    Dans ces cas là, tu vas écrire un fichier d'entête qui va donner le prototype de tes fonctions avant de les coder.
    Le prototype d'une fonction va prendre la forme :
    type_retour nom_de_la_fonction(type_parame tre1, type_parametre2,...)
    Ce fichier d'entête sera inclus dans les fichiers sources avec une directive #include

    exemple:

    fonction.h
    Code:
    /*directives de préprocesseurs qui évitent les includes multiples*/
    #ifndef FONCTION_H
    #define FONCTION_H
    int premiere_fonction(int, char);
    void deuxième_fonction(char*);
    /*le cas des fonctions ne prenant pas de paramètres*/
    int troisieme_fonction(void); //ceci est la norme du C
    //int troisieme_fonction(); est correcte aussi mais ne respecte pas la norme
    //un compilateur stricte devrait le rejeter (tous les compilateurs ne respectent pas la norme
    #endif
    Tu pourras avoir un fichier fonction.cpp
    Code:
    #include "fonction.h"
    /*maintenant que fonction.h est inclus le compilateur connait les prototypes des fonctions, il reste à les définir.
    Grace au fichier d'entête, tu peux le faire dans l'ordre que tu veux*/
    
    void deuxième_fonction(char* param)
    {
      //code
      a=troisieme_fonction(); 
      /* voilà l'un des intérêts,
      sans le fichier d'entête tu ne pourrais pas utiliser troisieme_fonction ici car elle n'est pas encore déclarée.
      (là c'est pas super parlant mais imagine que troisieme_fonction soit déclarée dans un autre fichier) */
      //code
    }
    
    int premiere_fonction(int param1, char param2)
    {
      //code
    }
    
    int troisieme_fonction(void)
    //ici, cela pourrait s'écrire int troisieme_fonction()
    //mais ce n'est pas la norme du C
    {
      //code
    }
    dans ton fichier principal tu auras
    Code:
    #include <stdio.h>
    ...
    #include "fonction.h"
    
    int main(void)
    {
      //code qui peut appeler les fonctions définies dans fonction.cpp
      //et déclarées dans fonction.h
    }
    Dernière modification par bzh_nicolas ; 15/10/2010 à 11h04.

  7. A voir en vidéo sur Futura
  8. #6
    jasmine.27

    Re : int main ? void main ? ou int main(void) ??!!

    Maintenant j'ai assimilé la différence

    Merci beaucoup Nicolas

  9. Publicité

Discussions similaires

  1. La main
    Par cha' dans le forum Santé et médecine générale
    Réponses: 3
    Dernier message: 11/09/2010, 23h48
  2. Poignées de main ...
    Par roy95 dans le forum Science ludique : la science en s'amusant
    Réponses: 11
    Dernier message: 20/01/2006, 10h37
  3. Chirurgie de la main
    Par Thierryd dans le forum La peau enveloppe merveilleuse de notre corps
    Réponses: 1
    Dernier message: 14/10/2005, 14h41
  4. Greffe de main
    Par Futura dans le forum La peau enveloppe merveilleuse de notre corps
    Réponses: 1
    Dernier message: 04/10/2005, 21h39
  5. INT management / Telecom INT
    Par biba dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 02/02/2005, 18h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.