Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1533 connectés 

  FORUM HardWare.fr
  Programmation
  C

  passage de tableau dans une fonction (débutant)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage de tableau dans une fonction (débutant)

n°862965
EA55
Posté le 02-10-2004 à 17:43:10  profilanswer
 

Salut, je suis confronté a ce probleme sur un programme que je fais en  
 
C. La solution est certainement tres simple et je suis sur que vous  
 
allez pouvoir m'aider :)  
 
J'aimerais faire passer le tableau suivant vers une autre fonction.
 
unsigned char donnees[] = { 0x18, 0x38, 0x28}
 
Pour ce faire j'utilise un pointeur de cette forme ;
 
void traiter_tableau(unsigned char *donnees) { ... }
 
Ce qui ne pose pas de probleme lors de la compilation, mais lorsque je  
 
mesure la taille de mon tableau avant et apres le passage (avec un  
 
sizeof()), j'obtiens 2 valeurs différente et je me retrouve au final  
 
avec un plus petit tableau.
 
Si quelqu'un peut me donner la solution pour qu'aucune des valeurs de  
 
mon tableau ne soit supprimer lors de son passage dans ma fonction  
 
traiter_tableau.
 
Merci d'avance !!

mood
Publicité
Posté le 02-10-2004 à 17:43:10  profilanswer
 

n°862984
cris56
Posté le 02-10-2004 à 18:17:11  profilanswer
 

passe la taille (dans un size_t) en parametre, si tu passe a sizeof le tableau et un pointeur sur ce tableau ca te renverra pas la meme chose
 
apprends que tableau != pointeur

n°863000
EA55
Posté le 02-10-2004 à 18:55:24  profilanswer
 

Oui j'ai vérifié avant de venir poster, en affichant ce qu'il y a dans mon tableau je n'ai que les 2 premiere valeurs de mon tableau:\
 
Tu peux me donner un exemple pour le size_t ?

n°863009
cris56
Posté le 02-10-2004 à 19:24:58  profilanswer
 

void traiter_tableau(unsigned char *donnees, size_t nb);
 
/* un appel possible */
traiter_tableau( donnees, sizeof donnees / sizeof donnees[0] );  
 
enfin ce n'est que mon avis mais j'utilise systematiquement ce design en ce qui concerne les tableaux

n°863203
Sve@r
Posté le 02-10-2004 à 22:58:25  profilanswer
 

Si tu appliques l'opérateur "sizeof" à un tableau, tu obtiens en retour la taille du tableau.
Si tu appliques l'opérateur "sizeof" à un pointeur, tu obtiens en retour la taille du pointeur, c'est à dire 4. C'est comme ça.
Dans ton programme, la valeur "donnees" est un tableau alors que dans ta fonction, c'est un pointeur.
 
Lorsque tu passes un tableau à ta fonction (je présume que tu écris l'instruction "traiter_tableau(donnees)" ) tu ne lui passes que l'adresse du premier élément de ton tableau, c'est à dire que c'est comme si tu écrivais "traiter_tableau(&donnees[0])". Comme les éléments d'un tableau se suivent en mémoire, lorsque tu reçois l'adresse du premier élément dans un pointeur, tu peux incrémenter ce pointeur pour obtenir les autres éléments de ton tableau.
Il te suffit juste que ta fonction sache combien d'éléments elle doit traiter. Cette information, tu peux l'avoir
1) soit en la passant à la fonction en second paramètre "traiter_tableau(donnees, 3)"
2) soit ton tableau contient une valeur particulière (appelée "valeur sentinelle" ) et ta fonction boucle jusqu'à ce qu'elle tombe sur cette valeur (c'est comme cela que sont codées les chaînes en C)
3) soit tu décides que ton tableau ne fera que 3 valeurs et tu codes ta fonction pour ne pas dépasser ce nombre


Message édité par Sve@r le 02-10-2004 à 23:00:08

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  passage de tableau dans une fonction (débutant)

 

Sujets relatifs
[PHP]variable de session dans une fonctionaidez un (jeune! :-) ) débutant! svp
Est ce normal que la fonction rmdir() ne marche pas chez free ?debutant en PHP
[PHP] pb de variable dans une fonctionTableau dynamique
Fonction javascript dans IFRAME sous Mozillaattribution valeur d'une variable fonction de la resolution ecran
Fonction whileaccéder à une valeur dans un tableau
Plus de sujets relatifs à : passage de tableau dans une fonction (débutant)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR