Tableau d'entier.

[Résolu]
Signaler
Messages postés
80
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
30 mars 2007
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
Hello !

j'ai un petit soucis avec une fonction qui renvoi un tableau en parametre... voila les details :

Dans mes fonctions :


int
* boutonDecodFlux(void)
{
int tabNbrFluxParCom[NOMBRE_DE_COM];
int *tab = (int *)tabNbrFluxParCom[NOMBRE_DE_COM];

return tab;
}

void fonction(int * tableau)
{
printf("%d", tableau[0];
}

Dans mon prog :

int * tab;
tab = boutonDecodFlux();
fonction(tab);

Ca compile mais lorsque j'execute, ca plante dans la fonction "fonction".. je ne vois pas quel est le probleme... Quelqu'un peut il maider??

Merci d'avance !

8 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Evidemment, ta fonction boutonDecodFlux(void) retourne un pointeur sur un tableau qui est détruit lorsque cette meme fonction s'arrete.


int
* boutonDecodFlux(void)

{

return new int[NOMBRE_DE_COM];

}
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
ou alors :
int * boutonDecodFlux(void)
{
static int tabNbrFluxParCom[NOMBRE_DE_COM];
int *tab = (int *)tabNbrFluxParCom[NOMBRE_DE_COM];

return tab;
}
Messages postés
80
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
30 mars 2007

Ok merrci beaucoup !!!

en fait, j'ai jamais compris a koi servait le static... En fait c'est simplement pour qu'un pointeur vers une variable local ne soit pas détruit apres l'appel d'une fonction.. Est ce exact ??

En tout cas merci encore !!
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
le mot clé static donne une durée de vie égale à celle du programme mais avec une portée réduite au bloc (fonction dans ce cas)
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ca veut aussi dire que tu ne peux appeler qu'une fois ta fonction. La
deuxième fois, ca retournera le meme tableau. Donc tu ne pourras en
avoir qu'un seul.
Messages postés
80
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
30 mars 2007

Oki.. et si je veux modifier mon tableau en cours de programme, il vaut mieux que j'utilise la premiere methode ?

merci pour vos conseils !!
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Si tu veux le modifier pas de pb, mais si tu veux créer deux tableaux, tu peux pas utiliser "static".
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Si tu veux le modifier pas de pb, mais si tu veux créer deux tableaux, tu peux pas utiliser "static".