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 pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 31
    Par défaut structure et pointeurs
    Bonjour, j'ai un problème avec un pointeur, une structure et une fonction.

    • J'ai créé une structure "date" (jour, mois, année)
    • Je renseigne une variable de type "date"
    • je crée un pointeur qui pointe sur cette variable (pDate)
    • je crée une fonction "valide_la_date" qui recoit en parametre une variable de type "date".


    Avant d'appeller ma fonction, j'affiche le contenu du pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf ("date_avant_valid:%d/%d/%d\n", (*pDate).jour, (*pDate).numMois, (*pDate).annee);
    pour l'instant tout va bien ...

    J'appelle ma fonction de la maniere suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valide_ma_date (*pDate);
    ma fonction est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int valide_ma_date (struct date uneDate)
    {
    ...
    }
    le probleme est que dans ma fonction valide_ma_date, je ne recupere pas ma variable ...

    Pouvez vous me donner un conseil ?

    Merci
    Matthieu

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Margatthieu Voir le message
    • J'ai créé une structure "date" (jour, mois, année)
    • Je renseigne une variable de type "date"
    • je crée un pointeur qui pointe sur cette variable (pDate)
    • je crée une fonction "valide_la_date" qui recoit en parametre une variable de type "date".
    Pourquoi t'embêter avec un pointeur si déjà tu possèdes une variable de type date et que ta fonction ne prend pas de pointeur en paramètre ? Ca n'a pas de sens !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  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
    ma fonction est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int valide_ma_date (struct date uneDate)
    {
    ...
    }
    le probleme est que dans ma fonction valide_ma_date, je ne recupere pas ma variable ...
    Dans ta fonction, tu récupères une COPIE de la structure passée en argument.
    Il est plus astucieux de récupérer une copie de l'adresse de la structure (qui est plus petite que la structure elle-même). C'est même indispensable si tu veux pouvoir modifier ta structure dans ta fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    valide_ma_date (&date);
    ...
    int valide_ma_date (struct date * uneDate)
    {
    ...
    }
    Si la fonction ne doit pas modifier la structure, déclare la constante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    valide_ma_date (&date);
    ...
    int valide_ma_date (const struct date * uneDate)
    {
    ...
    }
    A noter que (*pDate).jour s'écrit également et très classiquement comme pDate->jour

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 31
    Par défaut
    ok, j'ai compris
    Merci pour le conseil

    Pour répondre à Franck.H: j'utilise des pointeurs parce que le prof me l'impose ...

    ... étudiant ...

    A+
    Matthieu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Structures et pointeurs
    Par Tchetch dans le forum C
    Réponses: 14
    Dernier message: 19/10/2006, 13h30
  2. Structure et pointeur
    Par Nalido dans le forum C
    Réponses: 5
    Dernier message: 08/08/2006, 15h08
  3. Copie de structure par pointeur - Problème LSB MSB
    Par the_ionic dans le forum Réseau
    Réponses: 4
    Dernier message: 17/07/2006, 15h08
  4. Structures et pointeurs
    Par mastochard dans le forum C
    Réponses: 17
    Dernier message: 25/05/2006, 11h55
  5. [structure et pointeur] problème d'affichage
    Par kitsune dans le forum C
    Réponses: 17
    Dernier message: 22/03/2006, 22h20

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