我有同一位教授:我读过论坛:
How to write a function within a function (list_map)
理解函数的概念非常有用,但我不确定我是否正确使用它...
这是我的代码..如果我走在正确的轨道上,请告诉我......
假设我有一个包含10个链表的数组,链表中包含整数
现在我想对列表调用list_map()进行排序;功能
所以我的主要看起来像这样:
int x = 10;
LLIST *mylist[x];
bzero(mylist, sizeof(LLIST *)*x);
.
.
for(i=0; i< 10; i++)
{
//Segfalt
list_map(mylist[i],sort);
}
我的list_map看起来像:
void list_map( LLIST *list, void (*f)(void *) )
{
printf("Sort");
f(list);
}
并排序:
void sort(LLIST *n) {
//Sort Code
}
我运行它时遇到的错误是Segmentation fault。
请原谅我缺乏代码,我知道我的排序功能有效,我已经测试了它并打印出每个列表。如果你需要更详细地看到一些东西,请告诉我,我会提供它。
答案 0 :(得分:2)
你在分配mylist吗?基于你在这里所拥有的东西看起来像访问mylist的任何东西都会导致段错误。您确定应该是LLIST *mylist[x];
而不是LLIST mylist[x];
吗?
答案 1 :(得分:2)
bzero将内存归零并不分配内存,请使用malloc
int x = 10;
LLIST **mylist;
mylist = (LLIST**)malloc(sizeof(LLIST *)*x);
.
.
for(i=0; i< 10; i++)
{
//Segfalt
list_map(mylist[i],sort);
}
void list_map( LLIST *list, void (*f)(void *) )
{
printf("Sort");
f(list);
}