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 :

Comment passer une structure en argument?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut Comment passer une structure en argument?
    Bonjour,
    Voilà, dans mon programme, j'aurais besoin de passer une strucutre en argument et j'aimerais savoir comment on fait si c'est possible. J'arrive à passer des variables de type char ou int mais je n'arrive pas à passer une strucutre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int afficherclienti(int i){
     
    	printf("1.  Indentifiant..: %s\n", listeclient [i])  ;
    	return(i);   
     }
    et je me ressers de ma variable i dans ma fonction principale .

    Merci de vos réponses.

  2. #2
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    J'essaie de comprendre ce que tu veux faire mais j'ai peur de ne pas y arriver.

    Alors voilà je vais écrire un petit bout de code avec une structure pour la passer dans une fonction. Peut etre que ça t'aidera.
    A savoir : je ne suis pas pro donc je fais des fautes d'étourderie. Dans mes codes j'arrive en général à passer mes structures donc y'a pas de raison que je ne puisse pas te répondre ...

    Voici une structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct ma_structure
    {
      char  nom[256];
      int age;
      char ville [256];  
    };
    Dans la fonction principale on déclare un variable avec le type de notre structure et on appelle une fonction avec comme paramètre un pointeur sur la structure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct  ma_structure  x;
     
    apelFonction (&x);
    je passe un pointeur pour que la structure puisse être modifiée dans la fonction.

    Prototype de la fonction appelée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void apelFonction (struct ma_structure *);
    Fonction appelée avec un pointeur sur la structure comme paramètre--> j'écris p_ devant pour ne pas confondre et me rappeler que c'est un pointeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void apelFonction (struct ma_structure *p_x)
    {
      //exemple de code possible 
    strcpy( p_x->nom, "Mon nom"); //copie d'une chaîne de caractères dans le champs nom de la structure
    p_x->age= 30;
    strcpy (p_x->ville,"Paris");
    }

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par brunobzh Voir le message
    Bonjour,
    Voilà, dans mon programme, j'aurais besoin de passer une strucutre en argument et j'aimerais savoir comment on fait si c'est possible. J'arrive à passer des variables de type char ou int mais je n'arrive pas à passer une strucutre.
    ...
    Pourtant, tu peux passer une structure à une fonction, ou faire retourner une structure par une fonction, de la même façon que n'importe quel autre type de données à part les tableaux.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    struct maStruct
    {
      ...
      int i;
    };
     
    struct maStruct maFonc1( struct maStruct s)
    {
      ...// faire quelque chose avec s
      s.i = 2*s.i;
      return s;
    }
     
    struct maStruct maFonc2( void)
    {
       struct maStruct  s;
       ...// faire quelque chose avec s
       s.i = -1;
       return s;
    }
    ....
    struct maStruct  x;
    x = maFonc2();
    x = maFonc1(x);
    Toutefois, ceci n'est guère utilisé en pratique parce que ça entraine une copie implicite de la structure passée en argument dans la variable locale en paramètre de la fonction. Si la structure est de taille importante, on préfèrera passer son adresse, quitte à spécifier dans le paramètre un pointeur sur une structure constante (cf acryline post #2).

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/03/2008, 11h17
  2. Passer une structure en argument
    Par phoibe dans le forum C
    Réponses: 20
    Dernier message: 22/11/2007, 19h56
  3. [VB6]Comment puis-je passer une ComboBox en argument?
    Par Xan dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 26/02/2007, 15h03
  4. Réponses: 17
    Dernier message: 24/11/2006, 18h25
  5. Comment passer une fonction en argument
    Par Pades75 dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h34

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