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 :

passer un tableau en argument


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut passer un tableau en argument
    bonjour,

    j'aimerai passer à une fonction un tableau ou un pointeur sur ce tableau afin d'y modifier certaine valeur.

    voici un exemple de la fonction que je veux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void fonction1 (unsigned char tableau [20]) {
       tableau[0] = 5;
    }
    et son appel par le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void main (void) {
    unsigned char tbl1 [20];
     
      foncion1 (tbl1);
     
    }
    en faisant ceci et en regardant avec le debugeur, je vois que la fonction1 donne à tableau l'adresse de tbl1 donné en argument en si je fait
    tableau[5] = 1, elle change aussi la valeur de tbl1[5] car tableau a pris la même adresse que tbl1 passé en argument.

    c'est ce que je veux faire mais je ne comprend pas pourquoi je ne dois pas utilisé de pointeur sur le tableau dans ma fonction1??

    j'utilise un compilateur ansi C pour µcontroleur (KEIL µvision3) pour ceux qui connaisent.

    merci pour vos explication.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    c'est ce que je veux faire mais je ne comprend pas pourquoi je ne dois pas utilisé de pointeur sur le tableau dans ma fonction1??
    Pourquoi donc ?!

    Rien ne t'interdit d'écrire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void fonction1 (unsigned char *tableau)
    {
      tableau[0] = 5;
    }
    (Je ne connais pas ton compilo)

  3. #3
    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
    en faisant ceci et en regardant avec le debugeur, je vois que la fonction1 donne à tableau l'adresse de tbl1 donné en argument en si je fait
    tableau[5] = 1, elle change aussi la valeur de tbl1[5] car tableau a pris la même adresse que tbl1 passé en argument.
    C'est tout à fait normal et général : si on met un tableau en argument d'une fonction, c'est l'adresse du premier élément du tableau qui est passée, il n'y a pas de copie du tableau dans une variable locale.
    Donc, dans la fonction, tu travailles sur le tableau d'origine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void fonction1 (unsigned char tableau [20])
    qui est équivalent à (le 20 n'est pas du tout utilisé et n'a pas de signification pour le compilateur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void fonction1 (unsigned char tableau [])
    Les deux écritures sont absolument équivalentes pour le compilateur qui les interprète comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void fonction1 (unsigned char * tableau)
    Dans les trois cas, tableau est en fait un pointeur

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    merci de vos précisions,

    le compilateur est un compilo pour convertir du ansi c en code assembleur pour µproceseur (famille 8051)
    c'est keil µvision3 de arm.

    j'ai encore apris quelque chose aujourd'hui grace a vous.

    meci encore.

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

Discussions similaires

  1. Comment passer un tableau en argument de fonction
    Par Winnyls dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2009, 17h36
  2. Passer un tableau comme argument
    Par sinfos dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 19/02/2009, 09h29
  3. passer un tableau en argument dans une fonction
    Par rogerio dans le forum Débuter
    Réponses: 6
    Dernier message: 30/10/2008, 12h15
  4. passer un tableau en argument
    Par lanfeust42 dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2006, 19h32
  5. passer un tableau d'arguments à un thread
    Par madimane dans le forum POSIX
    Réponses: 5
    Dernier message: 14/04/2006, 07h08

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