Declare a C/C++ function returning pointer to array of integer pointers
Last Updated :
29 May, 2017
Declare “a function with argument of int* which returns pointer to an array of 4 integer pointers”.
At the first glance it may look complex, we can declare the required function with a series of decomposed statements.
1. We need, a function with argument int *,
function(int *)
2. a function with argument int *, returning pointer to
(*function(int *))
3. a function with argument int *, returning pointer to array of 4
(*function(int *))[4]
4. a function with argument int *, returning pointer to array of 4 integer pointers
int *(*function(int *))[4];
How can we ensure that the above declaration is correct? The following program can cross checks our declaration,
#include<stdio.h>
#define SIZE_OF_ARRAY (4)
typedef int *(*p_array_t)[SIZE_OF_ARRAY];
int *(*function( int *arg))[4];
p_array_t function( int *arg)
{
static int *arr[SIZE_OF_ARRAY] = {NULL};
p_array_t pRet = &arr;
return pRet;
}
int main()
{
}
|
The macro SIZE_OF_ARRAYÂ is used for symbolic representation of array size. p_array_t is typedefined as “pointer to an array of 4 integers”. If our declaration is wrong, the program throws an error at the ‘function‘ definition.
Share your thoughts in the comments
Please Login to comment...