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 :

probleme sur le passage d'argument par adresse


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 65
    Points : 55
    Points
    55
    Par défaut probleme sur le passage d'argument par adresse
    Bonjour à tous,
    le problème va surement paraitre simple à certains , mais j'ai du mal à saisir la notion de passage d'arguments par adresse.
    en effet dans les programmes de mon entreprise, cette notion et beaucoup utilisée et j'avoue que je m'y perd un peu ( car souvent cela ne coorespond pas trop avec les docs que j'ai consultées).
    plus particulièrement, je veux faire passer un tableaux de chaines de caracteres en arguments, et j'ai essayé plusieurs méthodes mais toutes me donnes des warning lors de la compile ....
    si quelqu' un pouvait me donner une explications (au moins pr mon tableaux), ça serait avec plaisir.

    pour infos voila ce que j ai deja ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char decoup[6][100];  //tableaux de 6 chaines de 100 caractere
    .......
    ma_fonction(char *decoup)
    {
    ....
    }
    merci d'avance.

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: probleme sur le passage d'argument par adresse
    Bonjour,
    Citation Envoyé par ghostdog
    mais j'ai du mal à saisir la notion de passage d'arguments par adresse.
    Si tu fait du C, ce n'est pas génant, les arguments sont toujours passés par valeur!
    Citation Envoyé par ghostdog
    j'ai essayé plusieurs méthodes mais toutes me donnes des warning lors de la compile ....
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char decoup[6][100];  //tableaux de 6 chaines de 100 caractere
    .......
    ma_fonction(char *decoup)
    {
    ....
    }
    Tout dépend de la manière dont la fontion ma_fontion est appelée. Peut être que ceci Les pointeurs du C et du C++ te permettra d'y voir plus clair

  3. #3
    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 Re: probleme sur le passage d'argument par adresse
    Citation Envoyé par ghostdog
    le problème va surement paraitre simple à certains , mais j'ai du mal à saisir la notion de passage d'arguments par adresse.
    Connait pas. En C il n'existe que des passages d'arguments par valeur. Celle-ci peut être une adresse.
    en effet dans les programmes de mon entreprise, cette notion et beaucoup utilisée et j'avoue que je m'y perd un peu ( car souvent cela ne coorespond pas trop avec les docs que j'ai consultées).
    C'est une notion fausse.
    plus particulièrement, je veux faire passer un tableaux de chaines de caracteres en arguments, et j'ai essayé plusieurs méthodes mais toutes me donnes des warning lors de la compile ....
    Ca montre bien qu'il y a un manque de maitrise quelquepart...
    si quelqu' un pouvait me donner une explications (au moins pr mon tableaux), ça serait avec plaisir.
    http://emmanuel-delahaye.developpez.....htm#param_tab
    pour infos voila ce que j ai deja ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char decoup[6][100];  //tableaux de 6 chaines de 100 caractere
    .......
    ma_fonction(char *decoup)
    {
    ....
    }
    C'est une FAQ, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ma_fonction(char decoup[6][100])
    {
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ma_fonction(char decoup[][100])
    {
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ma_fonction(char (*decoup)[100])
    {
    }
    Pour illustrer le propos (le 4 ème cas fait appel au pointeur sur tableau)
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #include <stdio.h>
     
    static void a (char decoup[6][100])
    {
       printf ("sizeof decoup = %u\n", (unsigned) sizeof decoup);
       printf ("sizeof *decoup = %u\n", (unsigned) sizeof *decoup);
       printf ("sizeof **decoup = %u\n", (unsigned) sizeof **decoup);
       printf ("\n");
    }
     
    static void b (char decoup[][100])
    {
       printf ("sizeof decoup = %u\n", (unsigned) sizeof decoup);
       printf ("sizeof *decoup = %u\n", (unsigned) sizeof *decoup);
       printf ("sizeof **decoup = %u\n", (unsigned) sizeof **decoup);
       printf ("\n");
    }
     
     
    static void c (char (*decoup)[100])
    {
       printf ("sizeof decoup = %u\n", (unsigned) sizeof decoup);
       printf ("sizeof *decoup = %u\n", (unsigned) sizeof *decoup);
       printf ("sizeof **decoup = %u\n", (unsigned) sizeof **decoup);
       printf ("\n");
    }
     
    static void d (char (*decoup)[6][100])
    {
       printf ("sizeof decoup = %u\n", (unsigned) sizeof decoup);
       printf ("sizeof *decoup = %u\n", (unsigned) sizeof *decoup);
       printf ("sizeof **decoup = %u\n", (unsigned) sizeof **decoup);
       printf ("sizeof ***decoup = %u\n", (unsigned) sizeof ***decoup);
       printf ("\n");
    }
     
    int main ()
    {
       char decoup[6][100];
       a (decoup);
       b (decoup);
       c (decoup);
       d (&decoup);
       return 0;
    }
    Donne chez moi (PC/XP/mingw) :
    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
     
    sizeof decoup = 4
    sizeof *decoup = 100
    sizeof **decoup = 1
     
    sizeof decoup = 4
    sizeof *decoup = 100
    sizeof **decoup = 1
     
    sizeof decoup = 4
    sizeof *decoup = 100
    sizeof **decoup = 1
     
    sizeof decoup = 4
    sizeof *decoup = 600
    sizeof **decoup = 100
    sizeof ***decoup = 1
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: probleme sur le passage d'argument par adresse

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 65
    Points : 55
    Points
    55
    Par défaut
    ok, je pense pouvoir me debrouiller avec vos explications
    merci.

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

Discussions similaires

  1. Passage d'arguments par valeur et adresse
    Par ToutEnMasm dans le forum C++
    Réponses: 12
    Dernier message: 04/10/2007, 09h32
  2. [C#] Passage d'argument par adresse
    Par diaboloche dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/04/2007, 00h50
  3. Probleme sur le passage par reference
    Par schnito dans le forum Langage
    Réponses: 10
    Dernier message: 02/02/2006, 16h50
  4. Passage des arguments par le shell
    Par panda31 dans le forum C
    Réponses: 8
    Dernier message: 09/11/2005, 11h53
  5. Réponses: 2
    Dernier message: 19/07/2005, 11h12

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