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 :

procedure de procedure de procedure


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 83
    Points : 52
    Points
    52
    Par défaut procedure de procedure de procedure
    Bonjour,

    J'aimerai recuperer un tableau passé en parametre d'une procedure qui est aussi passée en parametre de procedure de la procedure

    Un petit exemple vaut mieux qu'un long discours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //Fichier Main.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "initialisation.h"
    main () {
    int* tab;
     
    initialisation (tab);
    printf("%d\n",tab[0]);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Fichier initialisation.h
    #include "fonctions.h"
     
    void initialisation (int* tab){
    tab = (int*) malloc (sizeof(int)* 3);
     
    remplir(tab);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //Fichier Fonctions.h
     
    void remplir(int *tab){
    tab[0] = 2;
    tab[1] = 4;
    tab[3] = 6
    }
    Le code est vraiment simplifié, c'est juste pour montrer le principe
    mais dans le main.c, je n'arrive pas a recuperer la valeur de tab[0].

    J'ai lu pas mal de choses sur les pointeurs mais la je bloque...

    Merci par avance

    Edenyorke

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void initialisation (int* tab){
    tab = (int*) malloc (sizeof(int)* 3);
     
    remplir(tab);
    }
    Ici, tab est une variable local, donc, ça ne peut pas marcher.

    Il faudrait que tu passes en paramètre un pointeur sur le pointeur tab.

    Avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void initialisation (int** tab)
    Et appeler par :

    Je ne répondrai à aucune question technique en privé

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Points : 361
    Points
    361
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void init(int **tab)
    {
    	*tab=(int*)malloc(sizeof(int)*3);	
    }
     
    int main(int argc,char *argv[])
    {
    	int* tab;
    	init(&tab);
    	tab[0]=1;
    	printf("tab[0]=%d\n",tab[0]);
     
    	return 0;
    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 83
    Points : 52
    Points
    52
    Par défaut
    il me semblait qu'un tableau ne se passait pas en parametre de procedure par &tab comme c'est deja un pointeur...

    en tout cas il faut absolumentt que je garde ces 3 fichiers avec une procedure dans chaque.

    J'essai mais ca vient pas

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 83
    Points : 52
    Points
    52
    Par défaut
    ok j'avais pas tout lu, je vais essayer ca

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Tu as vu la modification :

    C'est un pointeur de pointeur, lis bien...


    Edit : réponse au post avant avant (le temps d'écrire, il y a eu le post d'avant).
    Je ne répondrai à aucune question technique en privé

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il ne faudrait pas oublier de libérer la mémoire allouée par un free, c'est quand même plus propre.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

Discussions similaires

  1. [d2006]procedure utilisant un paramètre procedure
    Par paulfr dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2013, 17h49
  2. Procedures stockées vs autres procedures
    Par links dans le forum PL/SQL
    Réponses: 18
    Dernier message: 31/01/2008, 23h43
  3. Procedures stockées vs autres procedures
    Par links dans le forum SQL
    Réponses: 18
    Dernier message: 31/01/2008, 23h43
  4. Réponses: 3
    Dernier message: 21/09/2004, 07h35
  5. Réponses: 4
    Dernier message: 28/12/2003, 15h50

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