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 qui ne marche pas sans variable globale


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Fonction qui ne marche pas sans variable globale
    voila mon probleme je test une fonction avec une variable global voici mon code
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int resultat = 5;
    void function(int nombre);
    int main()
    {
     
        function(resultat);
        printf("%d", resultat);
        return 0;
    }
    *
    void function(int nombre)
    {
        resultat = nombre * 3;
    }
    il marche bien ca affiche bien 15

    mais quand je passe en parametre a la fonction "resulta" ca ne marche pas voici le code :
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int resultat = 5;
    void function(int resultat);
    int main()
    {
     
        function(resultat);
        printf("%d", resultat);
        return 0;
    }
     
    void function(int resultat)
    {
        resultat = resultat * 3;
    }
    ca affiche 5 , comment c'est possible je suis perdu , eclairer moi un peu je ne comprend pas et merci pour votre aide.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Hello,
    C'est normal de ne pas comprendre. Ton paramètre de fonction porte exactement le même nom que ta variable globale, comment veux-tu t'y retrouver ?

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Règle 1: En C, c'est un passage par valeur.

    Essayes ceci:

    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
    void test_1(int x) { x = (x * 3); }
     
     
    void test_2(int* x) { if (x != NULL) { (*x) = ((*x) * 3); } }
     
     
    int main(int argc, char* argv[] {
        int a = 5;
     
        test_1(a);
     
        printf("test 1:%d\n", a); // 5
     
        test_2(&a);
     
        printf("test 2:%d\n", a); // 15
     
        return 0;
    }

    Citation Envoyé par nnovic Voir le message
    C'est normal de ne pas comprendre. Ton paramètre de fonction porte exactement le même nom que ta variable globale, comment veux-tu t'y retrouver ?
    Le paramètre va masquer la variable globale, en théorie

Discussions similaires

  1. aide probleme fonction InitCommonControls()
    Par PIC16F877A dans le forum C
    Réponses: 7
    Dernier message: 18/05/2011, 01h53
  2. [Mail] Probleme fonction mail()
    Par tissot dans le forum Langage
    Réponses: 1
    Dernier message: 14/11/2005, 12h55
  3. problème fonctions callback
    Par youp_db dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 02/10/2005, 14h47
  4. probleme fonction gethostbyname
    Par oclone dans le forum Développement
    Réponses: 6
    Dernier message: 14/04/2005, 10h31
  5. probleme fonction syntaxe
    Par gIch dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2005, 09h52

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