我有同样的教授:我读过论坛:
How to write a function within a function (list_map)
这对理解函数的概念很有帮助,但我不确定我是否正确使用了它。。。
这是我的密码。。让我知道如果我在正确的轨道上。。。
假设我有一个由10个链表组成的数组,其中链表包含int
现在我想对调用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);
}

我的列表地图看起来像:
void list_map( LLIST *list, void (*f)(void *) )
{
  printf("Sort");
  f(list);
}

排序:
void sort(LLIST *n) {
//Sort Code
}

我得到的错误是分割错误当我运行它。
请原谅缺少代码,我知道我的排序功能可以工作,我已经测试过了,它会打印出每个列表。如果你需要看一些更详细的东西让我知道我会提供它。

最佳答案

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

10-08 16:03