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 :

utilisation d'un pointeur passé en paramètre dans une fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Par défaut utilisation d'un pointeur passé en paramètre dans une fonction
    Bonjour
    je vous expose mon problème qui est très simple j'ai deux fichiers séparer un pour la fonction main() et le deuxième pour le traitement. Dans le deuxième fichier j'ai une fonction qui a deux paramètres d’entré (uint64_t message[2], char* asterix_mes) et son type de retour est void. dans la fonction main je veux récupérer le pointeur asterix_mes donc j'ai ecrit ce code mais lors de l'affichage j'ai des valeurs de 0 voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void  ident_message ( uint64_t  message[2], char* asterix_mes )
    {
    asterix_mes=ident_to_asterix_sub(message) ;
    /* ici asterix_mes contient l'information nécessaire */
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int main()
    {  
    char * asterix_mes;  
    asterix_mes= (char*) malloc(30);    
    ident_message(vect_test, &asterix_mes);
    /* asterix_mes est vide */ 
    }
    quoi faire??

  2. #2
    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
    Normalement, le compilateur aurait dû émettre un avertissement sur la différence entre le type de l'argument lors de l'appel (char **) et lors de la déclaration de la fonction (char*) ce qui vous aurait mis sur la voie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void  ident_message ( uint64_t  message[2], char** asterix_mes )
    {
      *asterix_mes=ident_to_asterix_sub(message) ;
    /* ici asterix_mes contient l'information nécessaire */
    ...
    }

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Par défaut
    Non ca ne marche pas et j'ai pensé a une autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char* ident_message ( uint64_t  message[2])
    {
    char* asterix_mes;
    asterix_mes=ident_to_asterix_sub(message) ;
    /* ici asterix_mes contient l'information nécessaire */
    return (asterix_mes)
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main()
    {  
    char * asterix_mes_main;   
    asterix_mes_main = ident_message(vect_test ); 
    }
    dans ce cas il me renvoi une erreur: On ne peut pas affecter une valeur de char* (dans ce cas asterix_mes_main) a une valeur de int (dans ce cas le type de retour de la fonction ident_message) j'ai rien compris de tout cela!!
    Le fait d'avoir ces deux fonctions dans deux fichiers différents ça pose ce genre de problèmes??

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Par défaut
    a savoir que j'ai fait le même type d'appel de fonction avec deux fonctions qui se trouvent dans le même fichier et je n'ai pas cette erreur

  5. #5
    Membre confirmé Avatar de nanox
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Par défaut
    char* ident_message ( uint64_t message[2])
    {
    char* asterix_mes;
    asterix_mes=ident_to_asterix_sub(message) ;
    /* ici asterix_mes contient l'information nécessaire */
    return (asterix_mes)
    ...
    }
    On ne peut pas affecter une valeur de char* (dans ce cas asterix_mes_main) a une valeur de int (dans ce cas le type de retour de la fonction ident_message) j'ai rien compris de tout cela!!
    Ici ta fonction ident_message renvoie un char*

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Par défaut
    Merci pour votre réponse nanox mais tu pense que c'est une bonne idée d'utiliser une variable globale et comme ça je n'aurai pas de problème avec ce pointeur entre deux fichiers différents

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/05/2008, 15h45
  2. comment passé un paramètre dans une requête sql
    Par java2008 dans le forum BIRT
    Réponses: 0
    Dernier message: 03/03/2008, 12h11
  3. [PL/SQL] Multi paramètre dans une fonction
    Par wiLL_ dans le forum Oracle
    Réponses: 2
    Dernier message: 28/02/2006, 17h31
  4. Réponses: 4
    Dernier message: 05/10/2005, 18h19
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

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