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 :

Structure et fonctions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut Structure et fonctions
    Bonsoir,

    J'ai déclaré une structure de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     typedef struct{
        float x;
        float y;
        float a;
        float b;
        float x_result;
        float y_result;
        float length_result;
      } vector;
      vector pt_rec;
    .


    Ensuite, je désire simplement créer une fonction effectuant certaines opérations sur les variables de cette structure; par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static float DoSth(float pt_rec.x, float pt_rec.a, float pt_rec.y, float pt_rec.b){
    (...)
    return x_result;
    }
    .
    Seulement, j'obtiens, à la compilation:
    error: expected ‘;’, ‘,’ or ‘)’ before ‘.’ token
    1) Comment puis-je faire?
    En effet, d'habitude, j'accède à un élément d'une structure par structure.élément.

    2) Je souhaiterais simplement que la fonction calcule x_result et y_result. Est-il ``mieux'' de déclarer la fonction comme static float, et de lui faire retourner x_result et y_result (si cela est possible), ou vaut-il mieux la déclarer ne retournant rien (void)?

    Merci.

  2. #2
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     typedef struct{
        float x;
        float y;
        float a;
        float b;
        float x_result;
        float y_result;
        float length_result;
      } vector;
      vector pt_rec;
    .
    pt_rec.x etc ... est un float, donc tu peux declarer ta fonction comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static float DoSth(float x, float a, float y, float b) {
    Et l'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoSth(pt_rec.x,pt_rec.a, pt_rec.y, pt_rec.b);
    Tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    static float DoSth(vector rec) {
    /* tu peux acceder aux aux membres rec.x rec.y etc... */
    }
     
    DoSth(pt_rec);
    Ceci dit, les operations de copie de structures sont assez cheres. Moi je ferais avec des pointeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    static float DoSth(vector *p_rec) {
    /* tu peux acceder aux aux membres p_rec->x p_rec->y etc... */
    }
     
    DoSth(&pt_rec);

Discussions similaires

  1. Probleme avec structures et fonctions
    Par isaac727 dans le forum Débuter
    Réponses: 2
    Dernier message: 31/03/2008, 23h01
  2. Passage d'une structure en fonction
    Par god_enel dans le forum C
    Réponses: 11
    Dernier message: 15/04/2007, 20h55
  3. structures et fonctions
    Par olivier1209 dans le forum C
    Réponses: 11
    Dernier message: 10/12/2006, 14h53
  4. Structure et fonction
    Par progfou dans le forum C
    Réponses: 7
    Dernier message: 04/07/2006, 14h23
  5. structures et fonctions
    Par kendras dans le forum C
    Réponses: 15
    Dernier message: 14/06/2006, 15h57

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