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 :

utilisation (void) incompris


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut utilisation (void) incompris
    Voila je n'ai pas trop compris dans quel sorte de programme on peut inserer void
    enfin ce que je n'ai pas trop compris c'est qu'il "ne r'envoie pas d'imformation"
    à quoi ça sert d'ecire quelque chose qui ne revoit rien ???

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Une fonction peut faire autre chose que simplement retourner une valeur.
    Exemple simple, fonction avec effet de bord: Affiche un entier.
    Code C : 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>
     
    /* Cette fonction prend un entier en paramètre et ne retourne rien. */
    void AfficheUnEntier(int x)
    {
    	printf("Valeur : %d\n", x);
    }
     
    /* Cette fonction ne prend aucun paramètre et retourne un entier. */
    int main(void)
    {
    	int toto = 42;
    	AfficheUnEntier(toto);
    	return 0;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    et dans ce cas la à quoi sert ceci :

    void UNE_FONCTION(void)

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    et dans ce cas la à quoi sert ceci :

    void UNE_FONCTION(void)
    La fonction peut quand même avoir un comportement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void afficherErreur(void) {
      fprintf(stderr, "Erreur");
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    Merci

    mais sinon je ne comprend toujours pas l'histoire de "ne retourne rien".



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* Cette fonction prend un entier en paramètre et ne retourne rien. */
    void AfficheUnEntier(int x)
    {
    	printf("Valeur : %d\n", x);
    }

    qu'est ce qui change entre avant et après la fonction ? ...
    je ne sais pas comment expliqué ce que je ne comprend pas là-dedans...

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    qu'est ce qui change entre avant et après la fonction ? ...
    L'affichage.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    euh... ça m'apporte pas grand chose...

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    je ne sais pas comment expliqué ce que je ne comprend pas là-dedans...
    Dans ce cas, si tu n'arrives pas à expliquer ce que tu ne comprends pas, on ne pourra jamais trop comprendre ^^

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Mais n'as-tu jamais fais un printf() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    est ce que vous ne pouvez pas me donnez un exemple de programme avec une fonction du genre :
    void AfficheUnEntier(int x)

    pour que puisse essayé de la comprendre


    (sinon j'ai deja utilisé printf() )

  11. #11
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    est ce que vous ne pouvez pas me donnez un exemple de programme avec une fonction du genre :
    void AfficheUnEntier(int x)

    pour que puisse essayé de la comprendre

    Suffit d'ajouter le main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int main(void) {
      AfficherEntier(42);
      return 0;
    }

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    Oui mais dans ce cas là autant l'inserer directement printf() dans la fonction main


    (?)

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    Bon, je considere la "question" comme resolu
    je verais ça plus tard.
    merci pour vos reponses

  14. #14
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    Oui mais dans ce cas là autant l'inserer directement printf() dans la fonction main


    (?)
    Oui et non.

    Imagine une fonction plus complexe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void afficherLogarithme(int i) {
     int j = 1;
     int log = 0;
     while(j<i) {
       j*=2;
       log++;
     }
     printf("%d", log);
    }
    Si tu dois utiliser à plusieurs endroit ton afficherLogarithme (le code est peut être faux...), la fonction sera utile pour ça.

    (même si on aurait plutôt tendance à faire une fonction int getLogarithme(int i) qui retourne le logarithme en base 2.

  15. #15
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Un autre cas typique c'est une fonction qui modifie des données qu'on lui passe sous forme de pointeur. Imagine une fonction qui insère un élément dans un liste chainée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void add_element(list_t *list, const void *element);
    Elle n'a pas besoin de retourner quoi que ce soit, puisqu'elle se contente de mofifier la liste qui lui est passée en paramètre.

    D'ailleurs tu n'as jamais utilisé free() ? Elle ne retourne rien.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    Encore merci

    sinon je n'ai pas encore apris à utilisé de pointeur je commence juste à le faire ce soir ...

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

Discussions similaires

  1. utilisation du void
    Par Elessar01 dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 16/04/2008, 09h57
  2. utiliser qsort avec void**
    Par dj.motte dans le forum C
    Réponses: 24
    Dernier message: 04/02/2007, 09h05
  3. Utilisation de void*
    Par vinzzzz dans le forum C
    Réponses: 4
    Dernier message: 21/10/2006, 17h40
  4. utiliser une fonction VOID pour des blocs relationnels ?
    Par ctobini dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 11/09/2006, 16h16
  5. Utilisation de void**
    Par KORTA dans le forum C
    Réponses: 6
    Dernier message: 05/09/2003, 19h52

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