Bonjour,
je me posais la question de où déclarer des variables (structures, tableaux, ...) permettant à mes fonctions de renvoyer plusieurs informations.
Exemple (simplifié):
Ma question est donc où déclarer tab_resultat (tableau de 100 int), sachant que tab_resultat n'est exploité que dans l'itération en cours de la boucle for de fonction1: je vois 3 solutions, chacune avec ses avantages et inconvénients:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 int main() { while(1) { fonction1(); } } void fonction1(void) { int i; for(i=0;i<100;i++) { fonction2(tab_resultat, i) //ici, on exploite tab_resultat } } fonction2(int *tab_resultat, int entree) { int j; for(j=0;j<100;j++) { tab_resultat[entree]=(j==entree); } }
-on déclare tab_resultat au début de fonction1 : inconvénient : on recrée le tableau à chaque appel de fonction1 (perte de temps)
-on déclare tab_resultat dans le main et on le passe en argument à fonction1 : avantage, on ne déclare qu'une fois le tableau; inconvénients : on doit l'écrire en paramètres pour 2 fonctions : perte de temps et alourdissement du code + ralentissement (plus de données à mettre en pile d’exécution)
-on crée une variable globale : avantages : on ne doit jamais le passer en argument d'une fonction, et dans certains cas (ex : un int), on peut manipuler l'objet sans avoir à transmettre un pointeur dessus à la place, mais on "s'encombre" avec de nombreuses variables globales.
NB : en pratique, toute mes fonctions ne sont pas dans le même fichier et il y en a parfois plus d'imbriquées
NB: j'ai pris ici un exemple avec un tableau, mais il peut s'agir de tout autres objets, de l'entier à une structure compliquée, ou a plusieurs objets différents (fonctions à plus d'arguments).
Ma question est donc la suivante : laquelle des méthodes est la meilleure (ou encore une autre à laquelle je n'aurais pas pensé)?
En vous remerciant par avance
Sandro11
Partager