Bonjour, alors voici ma question:

etant donné un entier m, je veux créer une fonction qui à partir de cet entier me renvoie un tableau de taille m passé en paramètre (de sortie). Pour cela j'utilise des pointeurs , mais deux possibilités me viennent en tête. quelle est la plus "propre" ?

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
 
int main()
{
    int m = 10;
    int* p = malloc(m*sizeof(int));
    if (p == NULL) 
    {
        printf("Memory allocation problem");
        exit(0);
    }
 
    ma_fonction(m, p);
 
    ....
 
    free(p);
    return 0;
}
avec

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
void ma_fonction(int m, int* p)
{
    int i;
 
    for(i = 0; i < m; i++)
        *(p+i) = i ;   //par exemple
}
ou

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
int main()
{
   int m = 10;
   int* p;
 
   ma_fonction(m, &p);
 
   ....
 
   return 0;
}
avec

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
 
void ma_fonction(int m, int** p)
{
    *p = malloc(m*sizeof(int));
    if (*p == NULL) 
    {
        printf("Memory allocation problem");
        exit(0);
    }
 
    int i;
 
    for(i = 0; i < m; i++)
        *(*p+i) = i ;   //par exemple
}
Merci d'avance pour votre réponse !