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 :

Tableau et fonction.


Sujet :

C

  1. #1
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut Tableau et fonction.
    salut,

    Je bloque sur un probleme qui me montre a quel point je dois reviser le C

    Je voudrais passer un tableau a une fonction sans que la fonction puisse modifier.

    Par exemple :

    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()
    {
        /* Definition et initialisation d'un tableau à -1*/
        int Proposition[7] = {-1,-1,-1,-1,-1,-1,-1};
        int i;
     
        for (i=0 ; i<7 ; i++)
            printf("%d ",Proposition[i]);
        printf("\n");
     
     
        Test(Proposition);
     
        for (i=0 ; i<7 ; i++)
            printf("%d ",Proposition[i]);
     
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void Test(int *Proposition)
    {
        int i;
        for (i=0 ; i<7 ; i++)
            Proposition[i] = 5;
     
    }

    Evidemment, ceci me donne

    -1 -1 -1 -1 -1 -1 -1
    5 5 5 5 5 5 5
    J'ai alors voulu enleve * et mettre [] a Proposition mais sans resultat.



    Voila, si vous avez un petit exemple, se serai nickel.

    Merci

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour.

    Avec le mot clef const ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Test(const int *p);
    http://c.developpez.com/cours/bernar...ne/node165.php

  3. #3
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut


    Pourquoi je n'y pense jamais a celui la ?

    Désolé et merci



    J'ai une autre question sur le meme sujet.

    Comment on passe un tableau a une fonction mais sans le passer par adresse ?
    C'est possible ?


    Du genre :
    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 main()
    {
        /* Definition et initialisation d'un tableau à -1*/
        int Proposition[7] = {-1,-1,-1,-1,-1,-1,-1};
        int i;
     
        for (i=0 ; i<7 ; i++)
            printf("%d ",Proposition[i]);
        printf("\n");
     
        Test(Proposition);
     
        for (i=0 ; i<7 ; i++)
            printf("%d ",Proposition[i]);
     
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void Test(int *Proposition)
    {
        int i;
        for (i=0 ; i<7 ; i++)
            Proposition[i] = 5;
     
        for (i=0 ; i<7 ; i++)
            printf("%d ",Proposition[i]);
     
    }

    Et que cela donne :

    -1 -1 -1 -1 -1 -1 -1
    5 5 5 5 5 5 5
    -1 -1 -1 -1 -1 -1 -1

    Merci.

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    De la même façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Test(const int tab[]);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Test(const int tab[TAILLE]);

  5. #5
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    Comment on passe un tableau a une fonction mais sans le passer par adresse ?
    Il n'y a pas de passage par adresse en C, seulement par valeur, le truc c'est que dans la plupart des contextes, un tableau est implicitement converti en un pointeur sur son premier élément, c'est ce qui se passe quand tu passes ton tableau à ta fonction, et c'est pourquoi, le paramètre est un pointeur et non un tableau. ça répond donc à ta question, puisque si tu modifies ton tableau dans ta fonction, étant donné que c'est le même que dans l'appelant, les modifications sont répercutés.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  6. #6
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Directement ce n'est pas possible (comme l'explique nicolas.sitbon), toutefois tu peux encapsuler ton tableau dans une structure et passer cette dernière à ta fonction, mais ce n'est pas très joli joli...
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  7. #7
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Merci pour ces precisions.

    Je pense que je vais faire autrement que la structure.

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

Discussions similaires

  1. tableau de fonction membre
    Par Sergejack dans le forum C++
    Réponses: 5
    Dernier message: 11/08/2006, 02h39
  2. [8086] Un tableau de fonctions
    Par disturbedID dans le forum x86 16-bits
    Réponses: 12
    Dernier message: 21/04/2006, 21h14
  3. Réponses: 8
    Dernier message: 10/03/2006, 17h28
  4. [mise à jour tableau en fonction du button radio]
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/12/2005, 11h41
  5. tableau et fonction en c++
    Par flobx dans le forum C++
    Réponses: 5
    Dernier message: 13/11/2005, 15h12

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