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 :

Modifier le contenu de pointeurs dans une fonction


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Modifier le contenu de pointeurs dans une fonction
    Bonjour,

    j'ai une fonction qui doit modifier le contenu de 2 pointeurs passés en paramètres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int maFonction(type1 * var1, type2 * var2) {
    	// manipuler var1 et var2
    	return 0;
    }
    Et je l'appelle comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    type1 * v1;
    type2 * v2;
    int res;
     
    res = maFonction(v1, v2);
    Ca compile, ça se lance, mais les manipulations restent locales à la fonction.
    Je modifie mon appel à la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = maFonction(&v1, &v2);
    Mais là, j'ai une plainte du compilo.
    Je modifie donc l'appel et le corps de ma méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int maFonction(type1 ** var1, type2 ** var2) {
    	// manipuler * var1 et * var2
    	return 0;
    }
    Ca compile, mais les modifications restent locales. Qu'ai-je donc mal fait ?

    (PS: je suis un développeur Java qui doit modifier un code C)

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Bonjour,

    peux tu nous montrer "tes manipulations" pour voir ce qui pourrait mal ce passer.

    [edit] /_!_\ tres important ou fais tu tes allocations ? avant l appel de fonction ou dedans ?
    "vaste programme"

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je ne comprend pas non plus mais le dernière version de ton code est la bonne
    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
     
    int main()
    {
       type1 * v1;
       type2 * v2;
       int res;
     
       v1 = NULL;
       v2 = NULL;
       res = maFonction(&v1, &v2);
    }
     
    int maFonction(type1 ** var1, type2 ** var2)
    {
       // manipuler * var1 et * var2
       *var1 = malloc(10);   /* par exemple */
       *var2 = malloc(12);   /* par exemple */
       return 0;
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    A moins que tu veuilles faire ça :
    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
     
    int maFonction(type1 * var1, type2 * var2); // prototype
     
    int main(void)
    {
       type1  v1;  // variable à modifier par la fonction
       type2  v2;  // variable à modifier par la fonction
       int res = maFonction(&v1, &v2); // passer l'adresse des variables à modifier
    ....
    }
     
    int maFonction(type1 * var1, type2 * var2)
    {
    ....
       *var1 = .... // modifiera le v1 de main
       *var2 = .... // modifiera le v2 de main
    ....
    }
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    il faut que tu postes ici cmt tu manipules tes pointeurs dans ta fonction pour qu'on puisse t'aider.

  6. #6
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci de votre aide.
    C'était une erreur de ma part, les variables ne restent pas locales, mais sont "perdues" ailleurs.

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Sol_Invictus Voir le message
    j'ai une fonction qui doit modifier le contenu de 2 pointeurs passés en paramètres.
    <...>
    Ca compile, ça se lance, mais les manipulations restent locales à la fonction.
    Je modifie mon appel à la fonction:
    http://emmanuel-delahaye.developpez....difie_variable
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. recuperation de contenu de variable dans une fonction javascript
    Par bouzakher dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/02/2009, 14h59
  2. Modification de pointeurs dans une fonction
    Par bluemartini dans le forum Débuter
    Réponses: 4
    Dernier message: 26/09/2008, 10h23
  3. Pointeur dans une fonction ?
    Par sliiim6184 dans le forum C
    Réponses: 4
    Dernier message: 28/12/2006, 11h32
  4. Réponses: 4
    Dernier message: 18/01/2006, 11h21
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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