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

  FORUM HardWare.fr
  Programmation
  C++

  tableau en parametre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

tableau en parametre

n°1317179
hm10
Posté le 02-03-2006 à 16:58:52  profilanswer
 

Help please
 
J'ai un tableau qui perd sa taille apres passage en paramètre.
 
fonction1 (int tb[]);
fonction2 (int tb[]);
 
main{
 
int tb[50];
   
   while (true){
 
        fonction1(tb)
 
   } //while
 
}  // main
 
fonction1(int tb[]){
      fonction2(tb)
}
 
fonction2(int tb[]){
    //instructions...
   // ajouter 5 elements a tb;
}
 
 
apres traitement dans les fonctionc 1 et 2 et au retour dans le main mon tableau tb[] garde juste la taille des 5 elements insérés et perd la taille [50].
Que faire afin que tb garde toujours sa taille tout en suivant les etapes de mon while?
 
Merci,
 
hm10
 

mood
Publicité
Posté le 02-03-2006 à 16:58:52  profilanswer
 

n°1317194
olivthill
Posté le 02-03-2006 à 17:14:13  profilanswer
 

Q1: Comment fais-tu pour voir la taille du tableau ?
 
Q2: Comment les 5 élements sont-ils ajouté dans fonction2 ?
 
Petite remarques pour infos :
 
1. Dans fonction1 et fonction2, sizeof(tb) renverra la taille du pointeur sur le tableau, et non pas la taille du tableau.
 
2. int tb[] est équivalent à int *tb
 

n°1317199
hm10
Posté le 02-03-2006 à 17:19:40  profilanswer
 

Merci pour la reponse. Mais le probleme c'est que a l'interieur de fonction2 je vois la taille [50] du tableau, mais un fois sorti  de cette fonction je ne peux pas ajouter d'autres éléments car la taille du tableau est réduite au nombre d'elements insérés

n°1317211
olivthill
Posté le 02-03-2006 à 17:31:47  profilanswer
 

Comment fais-tu pour voir cette taille ?
En utilisant sizeof ? strlen ? en faisant tourner l'application avec un debuggeur ?
 
D'après le code qui est montré, un tableau de 50 entiers est réservé sur la pile dans la fonction main(). Cet espace réservé ne sera jamais réduit tant que le programme ne sera pas sorti de la fonction main() et de ses sous-fonctions (sauf à bidouiller esp ou ebp avec de l'assembleur).
Donc, soit la taille que tu vois n'est pas la bonne, car la méthode pour voir cette taille est imparfaite, soit d'autres données viennent se mettre à partir du sixième élément du tableau de manière inopinée (fuite/débordement mémoire), faisant croire que le tableau s'est rétréci à 5 élements.

n°1317250
hm10
Posté le 02-03-2006 à 18:00:50  profilanswer
 

Normalement je le vois avec sizeof comme tu l'as dit et je vois qu'il garde la taille, suaf que je ne voyais pas tous mes éléments. Une autre question : Comment faire pour afficher des éléments l'un à côté de l'autre. Ex : Je voulais faire ceci :
 for (int i = 0; i < 50; i++){
    cout << tampon[i] << endl;
 }
Quand j'enleve le << endl, C++ ne m'affiche pas les éléments du tableau.
 
Merci bien pour votre aide

n°1317254
franceso
Posté le 02-03-2006 à 18:03:18  profilanswer
 

hm10 a écrit :

Normalement je le vois avec sizeof comme tu l'as dit et je vois qu'il garde la taille, suaf que je ne voyais pas tous mes éléments. Une autre question : Comment faire pour afficher des éléments l'un à côté de l'autre. Ex : Je voulais faire ceci :
 for (int i = 0; i < 50; i++){
    cout << tampon[i] << endl;
 }
Quand j'enleve le << endl, C++ ne m'affiche pas les éléments du tableau.


 
mets un seul endl, à la fin de l'affichage

Code :
  1. for (int i = 0; i < 50; i++)
  2.   cout << tampon[i] << " ";
  3. cout << endl;

n°1317321
skelter
Posté le 02-03-2006 à 19:16:44  profilanswer
 

un tableau a une taille statique, utilises std::vector si tu veux redimensionner

n°1317338
++fab
victime du syndrome IH
Posté le 02-03-2006 à 19:43:55  profilanswer
 

hm10 a écrit :


 for (int i = 0; i < 50; i++){
    cout << tampon[i] << endl;
 }
Quand j'enleve le << endl, C++ ne m'affiche pas les éléments du tableau.


 
ton programme se termine anormalement, et le destructeur de std::cout n'est pas appelé, et ne flush donc pas.

n°1317343
hm10
Posté le 02-03-2006 à 19:54:06  profilanswer
 

c'est bon les amis. Merci, tout est correct


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

  tableau en parametre

 

Sujets relatifs
VBA - Recevoir un tableau comme parametre d'une méthode[C] question passage d'un tableau a plusieurs dim en parametre
[Activex] - Passage de paramètre (Tableau)[Oracle/PL-SQL] Passer un tableau en paramètre d'une procedure stockée
Passer l'adresse d'un tableau en parametre[c] Passer l'adresse d'un tableau a 2 dim en parametre [OK]
passage d'un tableau php parametre à une fonction javascriptpasser un tableau d'entier en parametre dans une URL [resolu]
[VBA] Passer un tableau en parametre de fonction ?passer un tableau de type à 2 dimensions en paramètre ? comment faire
Plus de sujets relatifs à : tableau en parametre


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