I have a structure interval and *re[] as array of pointers to structure. In function insert(), I am able to store the required data in an array of pointers but when I return the array of pointers as return re, a warning is shown "return from incompatible type".
typedef struct interval
{
int start;
int end;
}interval;
interval *re[100000];
interval * insert(interval *intervals,interval newInterval,int sz, int *len)
{
int size_i=0;
for(size_i=0;size_i<=sz+1;size_i++)
{
re[size_i]=(interval *)malloc(sizeof(intervals[0]));
}
re[0]->start=intervals[0].start;
re[0]->end=intervals[0].end;
re[1]->start=intervals[1].start;
re[1]->end=intervals[1].end;
printf("%d,%d",re[0]->start,re[0]->end);
printf("\t%d,%d",re[1]->start,re[1]->end);
return re; //Statement where i am getting warning
}
int main(void)
{
interval intervals[100]={{5,6},{8,10},{11,16},{20,24}};
interval newInterval={};
interval * ret;
int sz=4,i;
int *len;
ret=insert(intervals,newInterval,sz,len);
printf("\n%d,%d",ret[0].start,ret[0].end);
printf("\n%d,%d",ret[1].start,ret[1].end);
}
In main() I want to receive the array of pointers in another pointer so that I can iterate over the returned array of pointers to structure.
But here I am getting some addresses.