2013-08-02 6 views
-4

Comment peut-on avoir une fonction retournant un pointeur vers un tableau et quelles sont les choses générales qu'il faut garder à l'esprit en faisant cela?Comment déclarer une fonction renvoyant un pointeur sur un tableau?

+0

Habituellement, on évite cela; la déclaration est poilue! –

+0

Alloue-t-il le tableau? – Jiminion

+0

@JonathanLeffler Ah, non, 'int (* func (args)) []' est trivial, n'est-ce pas? : P –

Répondre

2
int (*foo(void))[4]; 

déclare foo en fonction sans paramètre qui renvoie un pointeur vers un tableau 4 de int.

Par exemple:

int (*p)[4]; 
p = foo(); 
1

Généralement, une fonction renvoie un pointeur à l'élément zéro d'un tableau.

int * f() { 
    // ... 

L'astuce est - qui est responsable du stockage des éléments, de la fonction ou de l'appelant?

-1
How can one have a function returning a pointer to an array 

Cette fonction renvoie un pointeur sur un tableau:

char * create_array() { 
     char * array = malloc(ARRAY_SIZE, sizeof(char)); 
     return array; 
    } 

Cependant, si elle est pas strictement nécessaire, vous devriez éviter cette pratique. Par exemple, l'exemple précédent est et non une bonne pratique car elle alloue de la mémoire dans le tas, mais délègue à une autre fonction la responsabilité de la libérer.

+1

'void' n'est pas un pointeur sur un tableau, ni' char * '. –

+1

Et non, retourner un pointeur vers la mémoire de 'malloc() ated n'est pas une mauvaise pratique du tout. Inversement, c'est assez commun et idiomatique. –

+0

Oui, je sais! J'ai oublié d'écrire le type de retour: D –

Questions connexes