Declare «una función con argumento de int* que devuelve un puntero a una array de 4 punteros enteros».
A primera vista puede parecer complejo, podemos declarar la función requerida con una serie de sentencias descompuestas.
1. Necesitamos una función con argumento int * ,
function(int *)
2. una función con argumento int * , que devuelve el puntero a
(*function(int *))
3. una función con argumento int * , que devuelve el puntero a la array de 4
(*function(int *))[4]
4. una función con argumento int * , que devuelve el puntero a una array de 4 punteros enteros
int *(*function(int *))[4];
¿Cómo podemos asegurarnos de que la declaración anterior es correcta? El siguiente programa puede cotejar nuestra declaración,
#include<stdio.h> // Symbolic size #define SIZE_OF_ARRAY (4) // pointer to array of (SIZE_OF_ARRAY) integers typedef int *(*p_array_t)[SIZE_OF_ARRAY]; // Declaration : compiler should throw error // if not matched with definition int *(*function(int *arg))[4]; // Definition : 'function' returning pointer to an // array of integer pointers p_array_t function(int *arg) { // array of integer pointers static int *arr[SIZE_OF_ARRAY] = {NULL}; // return this p_array_t pRet = &arr; return pRet; } int main() { }
La macro SIZE_OF_ARRAY se utiliza para la representación simbólica del tamaño de la array. p_array_t se define como «puntero a una array de 4 enteros». Si nuestra declaración es incorrecta, el programa arroja un error en la definición de la ‘ función ‘.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA