tableau en parametre - C++ - Programmation
Marsh Posté le 02-03-2006 à 17:14:13
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
Marsh Posté le 02-03-2006 à 17:19:40
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
Marsh Posté le 02-03-2006 à 17:31:47
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.
Marsh Posté le 02-03-2006 à 18:00:50
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
Marsh Posté le 02-03-2006 à 18:03:18
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 : |
mets un seul endl, à la fin de l'affichage
Code :
|
Marsh Posté le 02-03-2006 à 19:16:44
un tableau a une taille statique, utilises std::vector si tu veux redimensionner
Marsh Posté le 02-03-2006 à 19:43:55
hm10 a écrit : |
ton programme se termine anormalement, et le destructeur de std::cout n'est pas appelé, et ne flush donc pas.
Marsh Posté le 02-03-2006 à 16:58:52
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