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 :

variables et fonctions


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut variables et fonctions
    Bonjour à tous !
    Cela fait 2 semaines que je me suis lancé dans la programmation et dans l'apprentissage du langage C. Mes questions sont donc relativement basiques

    Voici mon problème : j'essaie de créer un pointeur effectif dans une autre fonction que int main. Voici donc mon code (qui ne fonctionne pas, évidemment) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int main ()
    {
        int int1 ();
        return 0;
    }
    int int1 ()
    {
        long nombre = 0;
        long *pointeur1;
        pointeur1 = &nombre;
        printf("Nombre : %ld", *pointeur1);
    }
    Est-ce que quelqu'un pourrait-il m'expliquer pourquoi, lorsque j'exécute, l'écran n'affiche pas mon printf ?

    Autre petite question : comment faire pour déclarer une variable et sa valeur dans int main, déclarer le pointeur dans int int1 et afficher la valeur de la variable dans int int1 ?

    Merci d'avance pour vos réponses !

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Tu devrais te diriger vers quelques tutoriels de C.

    Pour appeler une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void maFonction(void);
     
    int main(void)
    {
               maFonction();
               return 0;
    }
     
    void maFonction(void)
    {
          //...
    }
    Pour transmettre un pointeur :
    prototype : void maFonction(int * ptr);.
    Appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i = valeurInitiale;
    maFonction(&i);
    .

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    @Samuel: En gros, ta ligne 3 déclare la fonction int1 (définie en ligne 6) au lieu de l'appeler.
    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.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par --Samuel-- Voir le message
    Bonjour à tous !
    Salut
    Citation Envoyé par --Samuel-- Voir le message
    Cela fait 2 semaines que je me suis lancé dans la programmation et dans l'apprentissage du langage C. Mes questions sont donc relativement basiques
    Peut-être commencer par prendre un bon tuto et le lire ce qui est valable pour tous. Même moi qui ai des années de prog, quand j'ai voulu apprendre Python ben j'ai téléchargé un tuto (celui de Swinnen) et j'ai commencé par le lire...

    Citation Envoyé par --Samuel-- Voir le message
    Voici mon problème : j'essaie de créer un pointeur effectif dans une autre fonction que int main. Voici donc mon code (qui ne fonctionne pas, évidemment) :
    Evidemment !!!

    Citation Envoyé par --Samuel-- Voir le message
    Est-ce que quelqu'un pourrait-il m'expliquer pourquoi, lorsque j'exécute, l'écran n'affiche pas mon printf ?
    Parce que tu n'appelles pas int1() !!!

    Citation Envoyé par --Samuel-- Voir le message
    Autre petite question : comment faire pour déclarer une variable et sa valeur dans int main, déclarer le pointeur dans int int1 et afficher la valeur de la variable dans int int1 ?
    Passer la valeur de la variable à la fonction int1 qui pourra l'afficher
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void int1(int);
     
    int main()
    {
        int v=10;
        int1(v);
    }
     
    void int1(int xxx)
    {
        printf("la variable vaut %d\n", xxx);
    }
    Tu remarqueras que
    1) int1 ne renvoyant rien est de type "void" et non "int" (ce qui oblige toutefois à la déclarer avant de l'appeler)
    2) le pointeur dont tu parles est totalement inutile. Accessoirement un pointeur n'est pas un but à atteindre quand on programme en C mais un outil qui, donc, doit n'être utilisé que quand on en a l'utilité
    3) le nom des variables est totalement libre entre différentes fonctions. Tu apprendras d'ailleurs qu'en fait, ce n'est pas "v" qui est reçue dans int1 mais une simple copie de sa valeur. Donc on peut mettre cette copie où on veut dans une variable nommée si on veut "v" ou bien "xxx". Le vrai problème se posera si on veut que int1() modifie la valeur d'origine ; ce qui ne peut pas se faire, alors, sans passer par un pointeur...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Problème d'appels d'une variable entre fonctions
    Par julien.nasser dans le forum MFC
    Réponses: 12
    Dernier message: 26/04/2006, 09h23
  2. Réponses: 4
    Dernier message: 16/02/2006, 10h40
  3. Réponses: 6
    Dernier message: 06/01/2006, 20h55
  4. "class" vector à indice variable et fonction membr
    Par icetechnik dans le forum C++
    Réponses: 14
    Dernier message: 25/11/2005, 23h46
  5. changer et afficher une variable en fonction d'un select
    Par psychoBob dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 22/11/2005, 08h15

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