我有一个函数可以将一个项目添加到我创建的列表中。如果是第一次并且列表指向NULL
,它分配列表并完成它,返回地址。如果不是第一次,它会添加另一个项目并再次返回第一个项目(现在我可以忽略这个返回)。列表和函数工作正常,这是原型:
typedef struct structTAppConsoleList {
char *text;
void (*cbFunction)(int);
int number; // This is the item number
struct structTAppConsoleList *previous;
struct structTAppConsoleList *next;
} TList;
TList *AppConsoleListAddItem(TList *p_list, const char *p_string, void (*p_funcPtr)(int));
因此,在我的代码中的某个地方,我必须创建很多它们,并且我正在尝试按照下面的代码所示进行制作。问题是,我无法让它工作......我想创建一些东西来对我想要创建的列表进行分组,然后在函数中使用它。下面的代码是我想要做的事情的一个想法。仅考虑我尝试分配 3 个列表的部分,其余部分对于此示例并不重要。
TList *list1;
TList *list2;
TList *list3;
int main(void)
{
int i,j;
TList **groupMyLists;
TList *temp;
groupMyLists=malloc(sizeof(TList)*3);
*groupMyLists =(TList*)&list1;
*(groupMyLists+1)=(TList*)&list2;
*(groupMyLists+2)=(TList*)&list3;
for(j=0;j<3;j++) {
temp=NULL;
for(i=0;i<10;i++) {
temp=AppConsoleListAddItem(temp,"some text",someFunc);
}
**groupMyLists=temp; // my make won't let me do this
groupMyLists++;
}
}
我很确定这会做到这一点,但我无法编译它。
在我的脑海中,(*groupMyLists)
将与(&list1)
, (&list2)
,(&list3)
相同,与,和(**groupMyLists)
相同。那为什么我不能呢?任何人?(list1)
(list2)
(list3)
(**groupMyLists=temp)
我希望我说清楚了!!我很难解释我正在尝试做的这种疯狂......