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 :

Passage d'arguments à travers une fonction


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Passage d'arguments à travers une fonction
    Bonjour,
    J'aimeré savoir si il est possible de passer à traver une fonction un argument de type int et un argument de type char?
    Merci pour vos réponses.

    pierre

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 578
    Points
    41 578
    Par défaut
    Oui, mais le char sera automatiquement promu en int, et si le char était négatif, le int sera négatif aussi.

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par win-pierre Voir le message
    J'aimeré savoir si il est possible de passer à traver une fonction un argument de type int et un argument de type char?
    Que signifie "passer à traver[s] une fonction" ?
    Que veux-tu faire exactement ?
    Quel est le code qui pose problème ?

    Nota. Bien qu'il soit techniquement possible d'utiliser un paramètre de type char (ou short), il sera promu en int au prix d'un léger supplément de code machine (plus de temps, plus de place...). On peut éviter ça en utilisant le type int. Ca ne change rien sur le plan du fonctionnement, mas ça allège le code machine.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Voici un exemple:
    fonction principale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main(){
    char tab[10];
    int i;
    fonction(tab, i);
    }
    la sous fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int fonction(char tableau[10], int p){
    scanf("%s", tableau);
    scanf("%d", p);
    return(tableau[10], p);
    }
    Mais sa ne marche pas, j'espère avoir été plus clair. Merci pour votre aide.

    pierre

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par win-pierre Voir le message
    <...>
    Mais sa ne marche pas, j'espère avoir été plus clair. Merci pour votre aide.
    Ton code est incomplet...
    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : D:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:1: warning: function declaration isn't a prototype
    main.c: In function `main':
    main.c:4: warning: implicit declaration of function `fonction'
    main.c:5: warning: control reaches end of non-void function
    main.c:3: warning: 'i' might be used uninitialized in this function
    main.c: In function `fonction':
    main.c:8: warning: implicit declaration of function `scanf'
    main.c:9: warning: format argument is not a pointer (arg 2)
    main.c:10: warning: left-hand operand of comma expression has no effect
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 7 warnings
    Plusieurs principes de base du C ne sont pas maitrisés :

    - il n'y a pas de 'sous fonctions', mais des fonctions.
    - les passages de paramètres se font exclusivement par valeur.
    - une fonction ne peut pas retourner plus d'une valeur.
    - tableau[10] est l'élément d'indice 10 d'un tableau de taiille 10, c'est à dire dont les index valides vont de 0 à 10-1, soit 9. Le comportement est donc iindeterminé
    - scanf() attend une adresse
    - un programme qui compile n'est pas forcément correct.

    Je te conseille de te former sérieusement au langage C avant de continuer. Il y a des livres et des tutoriels. Des références sur ce site (et le mien).

    Le langage C est puissant, mais c'est une arme redoutable si on ne sait pas s'en servir. On a vite fait de perdre un bras ou un œil en le manipulant...

    Ton code corrigé :
    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
    20
    21
    22
     
    #include <stdio.h>
     
    void fonction (char tableau[10], int *p)
    {
       printf ("Entrer une chaine : ");
       scanf ("%9s", tableau);
       printf ("Entrer un entier : ");
       scanf ("%d", p);
    }
     
    int main (void)
    {
       char tab[10];
       int i;
       fonction (tab, &i);
     
       printf ("tab = '%s'\n", tab);
       printf ("  i = %d\n", i);
     
       return 0;
    }
    Pose des questions si tu ne comprends pas.

Discussions similaires

  1. passage d'argument dans une fonction
    Par varfendell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/08/2010, 13h43
  2. Pb de passage d'argument dans une fonction de classe maison
    Par deusyss dans le forum Général Python
    Réponses: 10
    Dernier message: 18/03/2010, 02h14
  3. passage d'argument d'une fonction à une autre
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 23/11/2008, 21h09
  4. Passage d'argument dans une fonction d'une autre classe.
    Par lavince dans le forum Général Python
    Réponses: 5
    Dernier message: 13/09/2008, 22h16
  5. passage d'argument dans une fonction
    Par wadcyr8_197 dans le forum C++
    Réponses: 5
    Dernier message: 20/07/2007, 09h41

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