Partage
  • Partager sur Facebook
  • Partager sur Twitter

Déclaration de main

Laquelle choisir et pourquoi ?

Sujet résolu
Anonyme
    9 décembre 2005 à 18:59:12

    Bonjour, j'ai vu qu'il existait plusieurs manière de déclarer la fonction main et je voulait savoir les différences ainsi que laquelle choisir et pourquoi, et que veut dire chaque déclaration ( Asser Precis svp ).

    Rappel des déclaration de main :


    int main()
    int main(void)
    int main(int argc, char *argv[])
    int main(int argc, char **argv)

    • Partager sur Facebook
    • Partager sur Twitter
      9 décembre 2005 à 19:05:43

      int main()


      et

      int main(void)


      sont équivalent, ils n'ont aucune information des arguments qu'on passe à l'éxécutable et ils renvoient un entier.


      int main(int argc, char *argv[])


      et

      int main(int argc, char **argv)


      sont eux aussi équivalents, argc étant le nombre d'arguments passé à l'éxécutable et argv un tableau de chaines de caractères contenant les arguments eux mêmes (sachant que argv[0]est le nom de l'éxécutable).
      • Partager sur Facebook
      • Partager sur Twitter
        9 décembre 2005 à 21:28:07

        Je te conseille de prendre les deux dernieres declarations de main, en effet meme si tu n'utilise pas la ligne de commande dans ton programme ca te permet de prendre de bonnes habitudes
        • Partager sur Facebook
        • Partager sur Twitter
          9 décembre 2005 à 22:19:22

          Moi je prend la première, parce que comme je tape tout à la main, j'ai pas envie de me souvenir par coeur de la forme en argv alors que j'en ai pas besoin.

          Ca me semble inutile de l'utiliser quand on ne se sert pas des arguments.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            10 décembre 2005 à 12:28:58

            Bonjour, voici mon avis::

            l'utilisation d emain au debut d'un programme est obligatoire (logique me direz vous) par defautl certains compilteur utilise int main(voi) le mot void veut dire que dans les parametres de main on ne retourne rien...

            or pour ne pas vous tracassez l'esprit unitilement je vous conseil de mettre au debut de votre programme ceci:
            void main (void)
            pour votre information cela veut dire que on ne retournera aucune valeur dans le programme
            vous apprendrez par la suite que dans le c et c++ vous pouvez créer des fonctions qui retournerons de svaleurs exemple pour calculer un cube vous aurez comme code ceci


            #include <iostream.h>

            int cube (int);

            void main (void)
            {
            int nombre=0;

            cout<<"Entrer un nombre à mettre au cube : ";
            cin>>nombre;
            nombre=cube(nombre);
            cout<<"voici votre nombre mis au cube :"<<nombre;

            }

            int cube (int nbr_au_cube)
            {
            nbr_au_cube=nbr_au_cube*nbr_au_cube*nbr_au_cube
            return nbr_au_cube;


            Toutefois attention car j'utilise pour plus de simplicité les "cout" et "cin" qui sont l'equivalent en c de "printf" et "scanf" sauf que c'est du c++
            ce programme va donc retournez la valeur nbr_au_cube et va afficher cette valeur



            bonne continuation
            • Partager sur Facebook
            • Partager sur Twitter
              10 décembre 2005 à 12:31:37

              void main(void) n'est pas une définition valide selon le standard de la fonction d'entrée du programme, main. cf. § 5.1.2.je ne sais plus exactement.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                10 décembre 2005 à 12:56:02

                Donc moi aussi je tape tout à la main donc je préfère mettre int main(void)
                Mais je voulait savoir exactement ce à quoi servait : int argc, char *argv[]
                • Partager sur Facebook
                • Partager sur Twitter
                  10 décembre 2005 à 13:11:55

                  Un petit exemple simple pour comprendre les arguments en ligne de commande :

                  aff_str.c

                  #include <stdio.h>

                  int     main(int argc, char **argv)
                  {
                      if (argc == 2)
                        printf("%s", argv[1]);
                      printf("\n");
                      return (0);
                  }


                  Exemple d'application:


                  $> gcc -o aff_str -ansi -pedantic -W -Wall -O2 aff_str.c
                  $> ./aff_str "Voici la chaine a afficher"
                  Voici la chaine a afficher
                  $> ./aff_str Voici
                  Voici
                  $> ./aff_str

                  $> ./aff_str test1 test2

                  $>


                  Si le nombre d'arguments est egal a 2, alors on affiche le second argument du tableau argv.
                  On saute une ligne.
                  On retourne 0.

                  Pour vous entrainez :
                  -Changez le code pour que le programme affiche chaque argument mis en parametre separe par un '\n' (Donc le nom d'executable non compris). Vous avez le droit a une variable.
                  -Idem sans declarer aucunes autres variables.
                  -Affichez maintenant chaque resultat avec une majuscule a chaque premiere lettre.
                  -Pour finir : ecrivez un programme qui affiche 1 si l'argument est un nombre, et 0 sinon.

                  Je pense qu'avec ces petits exercices, vont comprendrez mieux l'interet des arguments en ligne de commande. Je vous conseille vivement de faire ces exercices sous un UNIX.

                  Bon code :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 décembre 2005 à 13:21:04

                    Le premier int argc ça te donne le nombre d'argument que la personne a donné lors de l'éxécution du programme, le second char *argv[] c'est un tableau de tous les arguments passés, le premier argument est toujours le nom du programme.

                    Un petit exemple :

                    #include <iostream>

                    using namespace std;

                    int main(int argc, char *argv[]) {
                        cout << argv[0] << "\n" << argv[1] << endl;
                        cin.ignore( numeric_limits<streamsize>::max(), '\n' );
                        return 0;
                    }


                    si tu lance ce programme comme ça dans ta console :
                    arg.exe salut


                    ça te sortira :

                    arg.exe
                    salut
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 décembre 2005 à 15:36:58

                      tu peux aussi les appeler int patate et char *courgettes[] si tu veux, hein.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        10 décembre 2005 à 16:29:39

                        Citation : Moustik

                        Bonjour, voici mon avis::

                        l'utilisation d emain au debut d'un programme est obligatoire (logique me direz vous) par defautl certains compilteur utilise int main(voi) le mot void veut dire que dans les parametres de main on ne retourne rien...

                        or pour ne pas vous tracassez l'esprit unitilement je vous conseil de mettre au debut de votre programme ceci:

                        void main (void)
                        pour votre information cela veut dire que on ne retournera aucune valeur dans le programme
                        vous apprendrez par la suite que dans le c et c++ vous pouvez créer des fonctions qui retournerons de svaleurs exemple pour calculer un cube vous aurez comme code ceci



                        #include <iostream.h>

                        int cube (int);

                        void main (void)
                        {
                        int nombre=0;

                        cout<<"Entrer un nombre à mettre au cube : ";
                        cin>>nombre;
                        nombre=cube(nombre);
                        cout<<"voici votre nombre mis au cube :"<<nombre;

                        }

                        int cube (int nbr_au_cube)
                        {
                        nbr_au_cube=nbr_au_cube*nbr_au_cube*nbr_au_cube
                        return nbr_au_cube;



                        Toutefois attention car j'utilise pour plus de simplicité les "cout" et "cin" qui sont l'equivalent en c de "printf" et "scanf" sauf que c'est du c++
                        ce programme va donc retournez la valeur nbr_au_cube et va afficher cette valeur



                        bonne continuation

                        Tu dis un peu n'importe quoi...
                        Il n'est pas obligatoire de mettre le main au début d'un programme. On peut très bien le mettre à la fin.
                        Tu parles de mettre void main(void) en disant que void veut dire que la fonction ne retourne rien. Dans ton cas, le premier void veut dire ça mais pas le deuxième... Donne pas d'info incomplète...
                        Et enfin, je dois avouer que cette phrase ne veut rien dire : ""cout" et "cin" qui sont l'equivalent en c de "printf" et "scanf" sauf que c'est du c++", même si j'en saisi le sens :(
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Déclaration de main

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown