gpt4 book ai didi

c - 返回指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:26 24 4
gpt4 key购买 nike

我有一个结构区间和 *re[] 作为指向结构的指针数组。在函数 insert() 中,我能够将所需数据存储在指针数组中,但是当我将指针数组作为 return re 返回时,会显示警告“从不兼容的类型返回”。

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);
}

main() 中,我想在另一个指针中接收指针数组,以便我可以迭代返回的指向结构的指针数组。但在这里我得到了一些地址。

最佳答案

reinterval ** 类型,因此您的函数的返回类型应该是 interval **。应做出相应的改变。

或者,

re 已经声明为全局的,因此不需要从函数返回。

您的代码中还有其他几个区域可能会发出编译器警告。

  • interval newInterval={}; 应替换为 interval newInterval;,因为标准禁止使用空的初始化大括号

  • len 在函数中使用未初始化。

关于c - 返回指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31368548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com