【发布时间】:2014-10-14 06:44:33
【问题描述】:
如果给定以下定义,我对如何定义函数指针有点困惑:
struct menu_item
{
char name[ITEM_NAME_LEN+1];
BOOLEAN (*func)(struct vm*);
};
我使用以下函数 menu_init 定义 menu_item 包含的初始变量的方式。这个函数假设定义了菜单项数组的每个成员。
void menu_init(struct menu_item * menu)
{
strcpy(menu[0].name, "\t1. Display Items");
menu[0].func = (*void)&print_list(struct vm_node node); //print list is suppose to print the entire linked list past to the function print_list. Though i am unsure if this is correct.
strcpy(menu[1].name,"\t2. Purchase Items");
strcpy(menu[2].name,"\t3. Save and Exit");
strcpy(menu[3].name, "\t4. Add Item");
strcpy(menu[4].name,"\t5. Remove Item");
strcpy(menu[5].name,"\t6. Display Coins");
strcpy(menu[6].name, "\t7. Reset Stock");
strcpy(menu[7].name,"\t8. Reset Coins");
strcpy(menu[8].name,"\t9. Abort Program");
/* The UNUSED() function is designed to prevent warnings while your
* code is only partially complete. Delete this function call once
* you are using vm in your own code */
}
print_list的声明如下。
void print_list(struct vm_node *root);
任何帮助将不胜感激。
【问题讨论】:
-
你能澄清一下你有什么问题吗?
-
只是语法。基本上我不确定我将如何声明它,以便当我使用 menu->func 时它会调用 print_list 函数并打印整个列表。
-
注意
print_list函数和struct menu_item中的函数指针成员有不同的参数列表和返回类型?除此之外,您只需将函数分配给结构中的成员func。
标签: c linked-list function-pointers