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 :

Pb de débutant sur les pointeurs!!!


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 82
    Par défaut Pb de débutant sur les pointeurs!!!
    bon jour tout le monde l'apprentissage du c et des pointeurs et assez difficile si j'ai bien compris le principe la pratique en est autrement.

    si vous pouviez m'aider ça me saurez très utile :

    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
    25
    26
    27
    28
    29
    30
    31
    #include <iostream.h>
    #include <stdio.h>
     
    // declaration de la structure produit
     
    typedef struct
    {
    	char *sRef;
    	char *sLib;
    	float fPrixHT;
    }produit;
     
    //prototype des fonctions
    void  Init(produit*);
     
     
    //fonction main
    void main()
    {	
    	produit tProd[100];
     
    	//initialisation du tableau
    	Init(tProd);
    	cout<<tProd[1].sRef;
    }
     
     
    void Init(produit *tProd[100])
    {
     
    }
    ça compile 0 errors 0 warnings mais dans le build erreur que je n'arrive pas à comprendre.
    L'erreur est dans l'appel à la fonction INit.
    Merci pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Par défaut
    c'est tout a fait normal ton prototype de Init ne correspond pas à la déclaration que tu en fais:
    Il faudrait savoir ce que tu veux faire mais a priori
    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
    25
    26
    27
    28
    29
    30
     
    #include <stdio.h> 
     
    // declaration de la structure produit 
     
    typedef struct 
    { 
       char *sRef; 
       char *sLib; 
       float fPrixHT; 
    }produit; 
     
    //prototype des fonctions 
    void  Init(produit[]); 
     
     
    //fonction main 
    int
    main() 
    {    
       produit tProd[100]; 
     
       //initialisation du tableau 
       Init(tProd); 
       printf("%s\n",tProd[1].sRef); 
       return 0;
    } 
     
     
    void Init(produit tProd[100]){}
    Je verrais plus un truc dans ce genre.
    Ton erreur provient du fait que lorsque tu définis le prototype tu indiques que la fonction Init recoit un pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void  Init(produit*);
    et lors de ta déclaration tu indiques que Init prend pour paramètre un tableau de pointeurs ce qui est différent. Bref, ton prototype ne correspond pas a ta déclaration, tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void Init(produit*);
    void Init(produit tab[100]){}
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void Init(produit*);
    void Init(produit *tab){}
    ou encore si tu veux faire un tableau de pointeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void Init(produit**);
    void Init(produit *tab[100]){}
    Sur ce a bientot, et bon courage avec les pointeurs !

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2003
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 82
    Par défaut
    J'ai mis la fonction main à la fin comme ça plus de pb de prototypes.

    apparement ça marche.

    Encore merci je vous tiens au courant si j'ai d'autres pb.

    @+++

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    à koi correspond produit* et produit** ? c une autre manière de déclarer un pointeur (*) et un tableau de pointeur (**) ??

  5. #5
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par drKzs
    à koi correspond produit* et produit** ? c une autre manière de déclarer un pointeur (*) et un tableau de pointeur (**) ??
    Quand tu déclares une fonction (mais pas quand tu la définis), tu n'es pas obligé de mettre le nom des paramètres.

    Exemple :
    void fonction(int, char*, double);

    Là je déclare que ma fonction prend un entier, une chaîne et un flottant en paramètres. Comme je n'écris pas le code, le nom des paramètres n'est pas important et je peux donc les omettre. Par contre ils doivent absolument être mis quand la fonction est définie.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    ok.... merci.

    et quel est l'avantage d'utiliser les prototype, je crois que c ça le nom.... c juste une question de présentation de définir les fonctions aux apres la fonction main ?

  7. #7
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par Anomaly
    Quand tu déclares une fonction (mais pas quand tu la définis), tu n'es pas obligé de mettre le nom des paramètres.
    Salut
    Mon problème avec les fonctions se niche ici alors je me permets de reprendre ce thread.
    Voilà souvent lorsque je définis une fonction pour faire une tâche quelqu'elle soit en fait cette fonction devient le programme
    C'est comme si je n'avais pas de fonction donc je suis assez embarrassé et je me demande comment définir correctement des fonctions afin qu'elles puissent être réutilisables dans de saines conditions?
    ++

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 15/10/2006, 16h52
  2. Question sur les pointeurs.
    Par Chrisemi dans le forum C++
    Réponses: 5
    Dernier message: 28/10/2005, 23h47
  3. Dev c++ en rade sur les pointeurs ?...
    Par Magicien d'Oz dans le forum C
    Réponses: 17
    Dernier message: 13/10/2005, 19h38
  4. questions sur les pointeurs
    Par Hyoga dans le forum C++
    Réponses: 17
    Dernier message: 08/01/2005, 23h25
  5. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51

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