Tableaux en paramètre de fonction

jazz2 Messages postés 8 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 26 juin 2007 - 22 juin 2007 à 12:53
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009 - 27 juin 2007 à 08:39
Si les pointeurs sont l'unique façon de passer un tableau en paramètre de fonction, alors comment passer un tableau comme paramètre de fonction, de sorte que seulement dans cette fonction, il ait été modifié et qu'au sortir de la fonction, plus de modifs sur ce tableau soient observables ?

5 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 24
22 juin 2007 à 13:29
en passant tu tableau en parametes, tu as un acces direct au élements de ce tableau. si tu modifies le tableau les modif seront visibles apres la sortie de la fonction.si tu ne veux pas que ce soit le cas, il faut travailler sur une copie du tableau.   
0
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
22 juin 2007 à 22:36
salut le seul moyen c'est de mettre le tableau dans une structure ou une classe

typedef struct {
int t[20];
} tableau;

void fonction( tableau tab) {
tab.t[0] = 21;
}

int main() {
tableau tab;
tab.t[0] = 14;
fonction(tab);
printf("%d",tab.t[0]); // tab.t[0] vaut toujours 14
}
0
mezaya Messages postés 202 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 6 mars 2010
25 juin 2007 à 00:41
comme dit plus haut le seul moyen de e pas modifier ton tableau est de travailler sur une copie.L'encapsuler dans une classe revient au même que de copier le tableau car au passage du parametre le compilateur va appeler le construteur de copie par défaut. C'est a dire une bonne vielle copie du tableau.


Voili,Voilou [;)]
0
jazz2 Messages postés 8 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 26 juin 2007
26 juin 2007 à 14:22
Dans une fonction, je travaille sur un tableau et une copie du tableau, et l'original est modifié... Quelle est la syntaxe à utiliser ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
27 juin 2007 à 08:39
Hello
Tu peut toujours essayer de copier ton tableau en "dur" dans ta fonction. Si tu connais a l'avance le nombre de case de ton tableau, tu peut écrire ce qui suit :
int iTab[10]; // ton tableau a copier
[...] // blabla

void MyFunc(int iTemp[10])
{
[...] // code
}

Tu peut même essayer de faire un define dessus afin d'avoir un tableau presque dynamique (j'ai dit presque. Sa changera juste a la compilation, pas en cours de route ;-) )

#define TAB_LEN 10
int iTab[TAB_LEN]; // ton tableau a copier
[...] // blabla

void MyFunc(int iTemp[TAB_LEN])
{
[...] // code
}

Voila j'espère que sa répondra à tes besoins.

@++
0