bonjour, je souhaite qu'une fonction me retoure plusieurs valeurs (ou un tableau). Pour cela je souhaiterais retourner un pointeur. Voici un exemple de code:
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
27
28
29
 
int *compare(int * , int *);	
const DIM = 3;
 
void main()
{
 int toto[DIM] = {5,1,10};
 int bobo[DIM] = {4,5,5};
 int *bin;
 int a,b,c;
 bin = compare(toto,bobo);
 a = *bin;
 b  = *(bin+1);
 c = *(bin+2); 
 
}
 
 int *compare(int *t, int *g)
 {
  int res[DIM];
  int i;
  for(i=0;i<DIM;i++){
    if(t[i]<=g[i])
      res[i] = 0;
    else
      res[i] = 1;
  }
  return res;
 }
Dans mon exemple, je retrouve bien les bonne valeurs pour a,b et c. Cependant je ne suis pas sur que les adresse bin+1 et bin+2 soient 'stable' (aucun risque que le compilateur les ecrase en cas d'allocation d'espace memoire pour une variable quelconque).
Note: du a des limitation du compilateur (compilateur pour microcontroleur specifique), je ne peux pas faire d'allocation dynamique.

Est ce que cette methode fonctionne (en C ANSI) ? si non, quelles sont les alternatives possibles ?

merci d'avance