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 :

les paramètres [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut les paramètres
    Bonsoir,

    Je trouve vraiment des difficultés de définir les paramètres à attribuer à une fonction ,et je sais bien qu'il n'y est pas fait au hasard .

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    le type  Fonction   (  paramètres );
     
    {
     
    les instructions
     
    }
    et merci

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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 026
    Par défaut
    Bonjour,

    J'ai du mal à comprendre ton problème.

    Tu dois transmettre à ta fonction toutes les informations dont elle a besoin.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int addition(int a, int b)
    {
              return a+b;
    }
    Chaque paramètre est séparé par une virgule et est constitué d'un type et d'un nom facultatif si le paramètre n'est pas utilisé dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Type1 fonction(Type1 nom1, Type2)
    {
               return nom1;
    }
    Quand tu veux transmettre des données, tu as deux choix, les passer par :
    - copie ;
    - pointeur ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void fonction(int a)//copie d'un int
    void fonction(int * a)//pointeur sur un int
     
    void fonction(int * a)//copie d'un pointeur sur un int
    void fonction(int ** a)//pointeur de pointeur sur un int
    Les pointeurs seront utilisés quand :
    - tu veux éviter la copie car la variable transmise est "trop grosse" (surtout pour le C++);
    - tu veux modifier la valeur de la variable dans la fonction appelante.

    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
    void foo(int a)
    {
           a++;
    } 
     
    void foo2(int * a)
    {
           (*a)++;
    }
     
    int a = 0;
    foo(a);
    //a vaut 0 car foo reçoit une copie de a;
    foo2(&a);
    //a vaut 1 car on a donné à foo2 un pointeur sur un a.
    On a aussi le mot clé "const" qui va s'appliquer sur l'élément à sa gauche et par défaut à sa droite pour le rendre constant (ou l'inverse j'ai un doute) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const int a; // int constant, on ne peut pas modifier la valeur de a;
    const int * a; //pointeur sur un int constant, on ne peut pas modifier la valeur pointée par a;
    int const * a; //idem précédant
    int * const a; //pointeur constant sur un int, on ne peut pas modifier a mais on peut modifier la valeur pointée par a
    const int * const a; //on ne peut ni modifier la valeur de a ni l'int pointé par a.
    /!\ Les tableaux (ex. int a[X]) sont, quand ils sont passé en paramètres d'une fonction sont équivalents à passer un pointeur (ex. int * a), c'est la seule exception.

    Les pointeurs sont des variables qui contiennent l'adresse d'une autre variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int a = 0;
    int * b; // il doit contenir l'adresse d'un int
    &a; //adresse de la variable a
    b = &a; //b contient l'adresse de la variable a
    *b; //variable pointée par b donc a.
     
    a = 6;
    *b; // vaut 6
    Mais bon, n'importe quel cours/tutoriel de C devrait te dire cela (et sûrement bien mieux que moi).

  3. #3
    Membre éclairé Avatar de JulieCarree
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 50
    Par défaut
    Bonjour silver4,
    ayant connu le même probleme, enfin je crois;
    quand tu écris une fonction et/ou une procédure:
    a) ex: tu souhaites simplement afficher un message genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void disBonjour (void);
    {
        printf ("Hello world !\n");
    }
    ta fonction n'a besoin d'aucuns paramètres à traiter donc tu mets void en paramètre dans la déclaration de ta foncion et tu l'appelle par b) ex: tu souhaites traiter une variable donc il faut la transmettre à ta fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     void foisDeux (int variable);
    {
        int resultat = variable * 2;
        printf ("variable fois 2 = %d\n", resultat);
    }
    Ta fonction a besoin d'un paramètre a traiter donc tu le mets avec son type en paramètre dans la déclaration de ta foncion et tu l'appelle par ----

    Voila le B.A.BA pour écrire des fonctions simplissimes vu par un autodidacte, les explications de Neckara étant beaucoup plus pertinentes mais peut-être un peu complexes pour débuter.
    Dans l'espoir de pouvoir t'aider, ayant connu les mêmes difficultés lorsque j'ai découvert les fonctions en programmation et que le compilo m'envoyait des messages incompréhensibles .

  4. #4
    Membre habitué
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    Bonsoir,

    oui ,exactement passer un argument à une fonction n'est pas fait au hasard ,
    c'est à dire
    une Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int addition(int a);
    {
    int b 
              return a+b;
    }
    Mon compilateur m'affiche une erreur (structurale) des arguments insuffisantes
    pour ma fonction (addition).

    Autrement faire passer une argument à une fonction doit être suffisant ,le problème est encore plus compliqué lorsque ma fonction est plus (grande ) donc il n' a pas une chose déterminante ()???
    à mon avis ().
    est ce qu 'il y a une solution ,désolé je suis débutant et je veux au moins comprendre .

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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 026
    Par défaut
    Bonjour,

    Mon compilateur m'affiche une erreur (structurale) des arguments insuffisantes
    pour ma fonction (addition).
    Pourrais-tu nous montrer cette erreur ?

    Autrement faire passer une argument à une fonction doit être suffisant ,le problème est encore plus compliqué lorsque ma fonction est plus (grande ) donc il n' a pas une chose déterminante ()???
    à mon avis ().
    est ce qu 'il y a une solution ,désolé je suis débutant et je veux au moins comprendre .
    Je ne comprends absolument pas ce que tu essayes de nous dire.

  6. #6
    Membre habitué
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    Une exemple:

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int addition(int a, int b);
     
    int main(void)
    {
        int result = addition(2, 3);
        printf("Résultat : %d", result);
        return 0;
    }
     
    int addition(int a)
    {
              int b;
        return a+b;
    L'erreur est (conflit de type pour addition ) ,c'est à dire que les arguments attribués à la fonction addition sont insuffisants ()

    Je ne veux pas compliquer les choses ,mais comprendre (me baser suffisamment )!!!.

    la correction est :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int addition(int a, int b);
     
    int main(void)
    {
        int result = addition(2, 3);
        printf("Résultat : %d", result);
        return 0;
    }
     
    int addition(int a, int b)
    {
     
        return a+b;

Discussions similaires

  1. [Débutant] Récupérer les paramètres d'une routine
    Par nifty dans le forum Assembleur
    Réponses: 5
    Dernier message: 18/04/2005, 14h35
  2. [Débutant] Pb avec les paramètres dans lien dynamique
    Par hackwell69 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/02/2005, 11h33
  3. Changer les paramètres régionaux
    Par STEF_1 dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2004, 15h39
  4. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  5. Réponses: 4
    Dernier message: 04/07/2003, 19h13

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