Open In App

Declare a C/C++ function returning pointer to array of integer pointers

Last Updated : 29 May, 2017
Comments
Improve
Suggest changes
Like Article
Like
Report
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, c
#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()
{          
}
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.

Next Article
Article Tags :
Practice Tags :

Similar Reads